我试图阻止用户在两个下拉菜单中使用相同的值。无论选择哪个值,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>
有没有正确的方法呢?
答案 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');
答案 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/