使用一组值在运行时生成多个下拉列表

时间:2011-09-21 10:03:41

标签: javascript jquery

我有一个数据表,它是样本的一部分。我想将每一栏分配给另一个人,所以'凯文'将采取第一列,'布莱恩'将采取第二列,'Cath'列第三,依此类推。一旦使用了他们的名字,我希望将其从所有其他下拉列表中删除,如果选择了其他人,我希望他们的名字重新出现,以便在另一个下拉列表中进行选择。

可以有无限数量的列,但从不超过可用的人数,所以我不必担心名称的下拉列表。

如果可能的话,我希望使用jQuery动态执行此操作。有没有人有任何我可以修改的示例代码?

1 个答案:

答案 0 :(得分:3)

批次更简单,只是禁用在别处选择的选项,使问题不是添加/删除选项,而只是禁用已经选择的选项。

如果这是可以接受的,代码归结为:

$('select').live('change',function(){
   //enable all options
   $('select option').attr('disabled',false);

   // disable in other select boxes items which has been selected in the currently changed one       
    $('select').each(function(){
        var $this = $(this);
        $('select').not($this).find('option').each(function(){
           if($(this).attr('value') == $this.val())
               $(this).attr('disabled',true);
        });
    });  

});

在此处查看实时示例:http://jsfiddle.net/S7PfY/

在该示例中,我已在3个单元格中动态创建了一个下拉列表,当您在一个单元格中选择一个名称时,此名称将不再可在任何其他名称中选择,除非它首先未被选中。