我有一个数据表,它是样本的一部分。我想将每一列分配给其他人,因此“ Kevin”将占据第一列,“ Bryan”将占据第二列,“ Cath”将进入第三列,依此类推。一旦使用了他们的名字,我希望将其从所有其他下拉列表中删除,如果选择了其他人,我希望他们的名字重新出现,以便在另一个下拉列表中进行选择。
可以有无数列,但最多不能超过可用人数,因此我不必担心下拉列表用完名称。
我希望在可能的情况下使用jQuery快速执行此操作。有没有人可以修改我的示例代码?
最佳答案
仅禁用已在其他位置选择的选项要简单得多,这使问题不在于不添加/删除选项而是仅禁用已选择的选项之一。
如果可以接受,则代码可以归结为:
$('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个单元格中动态创建了一个下拉列表,当您在一个单元格中选择一个名称时,除非首先未选择该名称,否则该名称将不再在其他任何单元格中可供选择。
关于javascript - 使用一组值在运行时生成多个下拉列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7497993/