Jquery检查重复的下拉列表值
我试图阻止用户在两个下拉菜单中使用相同的值。不管选择了什么值,Jquery都返回trueJquery检查重复的下拉列表值,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"); }
$("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');