如果下拉选择选项不包含另一个下拉列表选择列表中的值,我正在尝试选择该选项的空(第一个)值:
$('#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。
您没有任何选项元素具有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);
}});
工作演示
试试这个:你的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
这将为你工作。
首先,你必须检查你this.value
,因为任何字符串都包含''
。其次,由于if
工作正常,您只需按[value=-1]
过滤option
最终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);
}
});