不允许重复下拉列表

时间:2011-08-02 14:54:18

标签: jquery forms

我猜这是JS或jQuery,但我对这些都不熟悉(在PHP多年后才开始接受它们)。

我有一个表格中有3个相同的下拉框。所有这些都有一个从MySQL数据库中提取并通过PHP填充的相同引用列表。让我们说这些城市是:

  • 城市1
  • City 2
  • ...
  • City 8

3个下拉列表的默认值为:

  • 下拉1是城市1
  • 下拉2是N / A
  • 下拉3是N / A

基本上我只需要让下拉工作在3个中任何一个中选择的城市自动将其从其他2个下拉中删除。最后,3个下拉列表中不能有重复的条目。我还需要它动态发生(onChange事件?),这样如果他们在第一个列表中选择City 4,它会立即从其他两个下拉列表中删除。

希望这有道理吗?任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:1)

试试这个

   var selectedVal, $this, valuesToCheck;
$("select").change(function(){
   selectedVal = $(this).val();
   valuesToCheck = [selectedVal];
  $("select").each(function(){
     valuesToCheck.push($(this).val());
     $(this).find("option:disabled").removeAttr("disabled");
  }).each(function(){
        $this = $(this);
        $.each(valuesToCheck, function(){
            $this.find("option[value='"+this+"']").attr("disabled", "disabled"); 
        }); 
    }); 
});

答案 1 :(得分:1)

$("#selectBox option[value='option']").remove(); --remove

$("#selectBox").append('<option value="option">option</option>'); --add

您可以使用.change()删除选项

$("select").change(function(){
  //remove option
})

从select1和select2中移除城市并且用户将select3的值更改为其他城市后会发生什么情况,您是否将城市添加回列表?

答案 2 :(得分:0)

如果他改回了下拉1的值?我想你将不得不放回去掉的价值?这将创建大量的ajax调用来刷新其他下拉列表的内容。我建议您在onChange事件上验证您的条件,如果检测到重复项,则显示一个msg。

如果您删除条目,就像其他repsonse sugest ....如果您在第一个下拉列表中逐个选择所有城市1,那么您最终将不会再在另外2个城市中输入; - )