2011-09-21 56 views
0

我有一个数据表,它是示例的一部分。我想将每列分配给不同的人,所以'凯文'将列第一列,'布莱恩'列第二列,'第三列'等等。一旦他们的名字被使用,我希望将其从所有其他下拉列表中移除,如果选择了其他人,我希望他们的名字在另一个下拉列表中重新出现。在运行时使用一组值创建多个生成的下拉列表

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

如果可能的话,我想这样做使用jQuery在飞行中。有人得到我可以修改以适合的任何示例代码吗?

+0

我很困惑。你的意思是你从一个下拉菜单开始,该下拉菜单包含与列表一样多的选项?然后,您从下拉列表中选择一个选项(人员),并将该选项从下拉菜单中删除? –

+0

我将在表格中的每列的顶部添加一个下拉菜单。在每个这些将会有所有的名字。如果我为第一列选择“Cath”,那么她的名字需要从其他所有下拉菜单中删除。如果我在下拉菜单中取消选择她,那么她的名字需要重新添加到所有下拉菜单中以供选择。 –

+0

嗯,这是一个很好的! –

回答

3

这是一个lot更简单,只是禁用其他地方已选择的选项,使问题之一不添加/删除选项,但只是禁用已被选中的选项。

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

$('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个细胞创造了一个下拉列表中,当你选择一个单元格中的名称不能在其他任何单元格中选择,除非首先取消选择该名称。

+0

我有大约3倍的代码量,它还没有完成,所以是的,这种方法是一个很简单! –

+0

顺便说一句 - 这个答案直接从我以前的答案撕裂类似的问题 - 请参阅[这里](http://stackoverflow.com/questions/7309730/jquery-select-option-disabled-if-selected-in-多选盒/ 7310103#7310103) – Jamiec