如果不包含字符串,请使用jQuery在下拉列表中选择空值

时间:2015-02-04 08:03:41

标签: javascript jquery

我试图选择下拉选择选项的空(第一)值,如果它不包含另一个下拉选择列表中的值:

$('#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">&nbsp;</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">&nbsp;</option>
    <option value="12">VAL1 SELECT OPTION</option>
    <option value="15">VAL2 SELECT OPTION</option>
    <option value="10">VAL3 SELECT OPTION</option>
</select>

编辑:添加了JsFiddle

3 个答案:

答案 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);
}});

Working Demo

答案 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);
    }
});