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/