Jquery检查重复的下拉列表值

我试图阻止用户在两个下拉菜单中具有相同的值。 无论选择哪个值,Jquery都返回true。

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

http://jsfiddle.net/zbaKE/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"); } }); });​ 

如果你想阻止用户从其他下拉菜单中选择相同的值,你可以使用这样的东西;

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

工作案例在这里 ( .find() .prop() .filter() .prop() .filter()

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

演示: 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(""); } }); });​ 

在每次更改之前,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/