2012-11-02 83 views
1

我的应用程序有多个<select>下拉菜单,显示完全相同的选项列表。一旦我从其中一个下拉列表中选择一个项目,那么它应该从其他下拉列表中移除选定的项目。我如何用JavaScript实现这一目标?具有相同选项的多个下拉菜单:如何从其他下拉菜单中删除当前选定的一个下拉菜单项?

+1

能否请您发布一些代码? –

+0

@Asad:想象多个完全相同的''元素。非常简单。 – BalusC

+0

@BalusC确实如此,但在回答问题时,如果必须在方法中识别并解释问题,而不是从头开始编写整个实现,它会有所帮助。 –

回答

1

你会识别元素的值属性,然后遍历所有选择元素,遍历其所有内容,查找具有相同的价值属性值,最终除去使用选项之一:

option.parentElement.removeChild(option); 

或者,你可以使用jQuery:

$(document).on('change','select',function(){ 
    $(this).addClass('exception'); 
    $('option[value="' + this.value + '"]:not(.exception *)').remove(); 
    $(this).removeClass('exception'); 
}); 

http://jsfiddle.net/PCvT4/

这样达成了同样的事情。我在这里可以预见到的问题是,您将在几次选择后用完选项。你可以尝试禁用选项,就像这样:

$(document).on('change','select',function(){ 
    $('option[value="disabled"]').prop('disabled',false); 
    $(this).addClass('exception'); 
    $('option[value="' + this.value + '"]:not(.exception *)').prop('disabled',true); 
    $(this).removeClass('exception'); 
}); 

http://jsfiddle.net/ZrsC6/

+0

这工作就像一个魅力!谢谢 :) – CarterMan

0

试试这个:

$(document).ready(function() { 
    $("select").change(function() { 
     var self=this; 

     $("select").each(function() { 
      if (this===self) { 
       return; 
      } 

      $(this).prop('selectedIndex',0); 
     }); 
    }); 
});​ 

Working fiddle

相关问题