我试图选择下拉选择选项的空(第一)值,如果它不包含另一个下拉选择列表中的值:
$('#FirstDropdown').change(function() {
if ( $('#SecondDropdown option').filter(':contains(' + this.value + ')') ){
$('#SecondDropdown option').filter(':contains(' + this.value + ')').prop('selected',true);
}else{
$("#SecondDropdown option[value='']").prop('selected',true);
}
});
如果#SecondDropdown option
包含this.value
,则此代码可以正常工作,但如果没有,则else语句不会重置下拉列表。
有什么建议吗?
编辑:下拉列表如下所示:
<select id="FirstDropdown">
<option value="" selected="selected"> </option>
<option value="VAL1">First Value</option>
<option value="VAL2">Second Value</option>
<option value="VAL3">Third Value</option>
<option value="VAL4">Fourth Value</option>
</select>
<select id="SecondDropdown">
<option value="-1"> </option>
<option value="12">VAL1 SELECT OPTION</option>
<option value="15">VAL2 SELECT OPTION</option>
<option value="10">VAL3 SELECT OPTION</option>
</select>
编辑:添加了JsFiddle。
答案 0 :(得分:2)
您没有value=''
的任何选项元素。您需要使用$("#SecondDropdown option[value='-1']").prop('selected',true);
。您还需要将if语句中的条件更改为this.value!=''
:
$('#FirstDropdown').change(function() {
if ( this.value!='' ){
$('#SecondDropdown option').filter(':contains(' + this.value + ')').prop('selected',true);
}else{
$("#SecondDropdown option[value='-1']").prop('selected',true);
}});
答案 1 :(得分:0)
试试这个:if
条件存在问题,因为它始终是真的。您可以使用.length
检查是否存在option
,然后选择其他选项空白
$('#FirstDropdown').change(function() {
if ($('#SecondDropdown option:contains('+this.value +')').length>0){
$('#SecondDropdown option:contains('+this.value +')').prop('selected',true);
}else{
$("#SecondDropdown option[value='-1']").prop('selected',true);
}
});
<强> JSFiddle Demo 强>
答案 2 :(得分:0)
This会对你有用。
首先,您必须检查this.value
,因为任何字符串都包含''
。
其次,由于if
工作正常,您只需按option
过滤[value=-1]
最后的JS:
$('#FirstDropdown').change(function() {
var $second = $('#SecondDropdown option').filter(':contains(' + this.value + ')');
if (this.value && $second){
$second.prop('selected',true);
}else{
$("#SecondDropdown option[value=-1]").prop('selected',true);
}
});