Jquery检查重复的下拉列表值

时间:2012-05-29 23:28:38

标签: 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");
        }
    });
});

<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>

http://jsfiddle.net/zbaKE/1/

有没有正确的方法呢?

4 个答案:

答案 0 :(得分:2)

如果您想阻止用户从其他下拉菜单中选择相同的值,您可以使用类似的内容;

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');

工作案例为here.not().find().prop().filter()

答案 1 :(得分:1)

您需要删除false上的DUBS文本,而不是测试相同的选择字段。使用not()来实现这一目标。

演示:http://jsfiddle.net/zbaKE/3/

$("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");
       }
   });
});​

答案 2 :(得分:0)

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

演示:http://jsfiddle.net/zbaKE/2/

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

答案 3 :(得分:0)

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

您的jQuery可以像这样编写

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

以下是一个工作示例:http://jsfiddle.net/tuC4Y/1/