Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery检查重复的下拉列表值_Jquery_Drop Down Menu - Fatal编程技术网

Jquery检查重复的下拉列表值

Jquery检查重复的下拉列表值,jquery,drop-down-menu,Jquery,Drop Down Menu,我试图阻止用户在两个下拉菜单中使用相同的值。不管选择了什么值,Jquery都返回true $("select[id$='go']").change(function() { var value = $(this); $("select[id$='go']").each(function() { if ($(this).val() === value.val()) { $('#work').html("DUBS"); }

我试图阻止用户在两个下拉菜单中使用相同的值。不管选择了什么值,Jquery都返回true

$("select[id$='go']").change(function() {
    var value = $(this);
    $("select[id$='go']").each(function() {
        if ($(this).val() === value.val()) {
            $('#work').html("DUBS");
        }
    });
});

<select id="_go">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>

<select id="_gogo">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>

<div id="work"></div>

有没有合适的方法可以做到这一点?

我不认为每次都返回true,如果为false,您的逻辑不会删除DUBS文本

演示:


每次更改前,DUBS文本不会设置为空

您的jQuery可以这样简单地编写

$("select[id$='go']").change(function(){
    $('#work').html('Different');
    if ($("select[id=_go]").val() == $("select[id=_gogo]").val()){
        $('#work').html("Same");
    }
});

下面是一个工作示例:

您需要删除false上的DUBS文本,并且不要测试同一个select字段。使用“不要”来实现这一点

演示:


如果您想阻止用户从其他下拉列表中选择相同的值,您可以使用类似的方法

var $select = $("select[id$='go']");
$select.change(function() {
    $select
      .not(this)
      .find('option')
      .prop('disabled', '')
      .filter('[value='+this.value+']')
      .prop('disabled','disabled');
});
$select.eq(0).trigger('change');

工作情况是,,

更改代码已经使用属性选择器中的$=附加到两个下拉列表中。如果有另一个select,则需要.each函数,因此这可能只是示例的一个限制。@Tim您的方法是手动执行的。假设我的工作中有10个下拉菜单。我正在寻找一种方法,通过迭代来评估每个选择,而不是检查每个单独的选择id。@Norse Yep抱歉,我猜我在两个下拉菜单中的选择太过真实了。虽然与我原来的方向有点偏离,但这非常有帮助+1.
$("select[id$='go']").change(function() {
   var value = $(this).val();
   $("select[id$='go']").not(this).each(function() {
       if ($(this).val() == value) {
           $('#work').html("DUBS");
       }else{
           $("#work").html("SUBS");
       }
   });
});​
var $select = $("select[id$='go']");
$select.change(function() {
    $select
      .not(this)
      .find('option')
      .prop('disabled', '')
      .filter('[value='+this.value+']')
      .prop('disabled','disabled');
});
$select.eq(0).trigger('change');