我想从我的select2()库下拉菜单中禁用其余的选择选项

时间:2019-04-03 12:12:23

标签: javascript jquery

我想从我的select2()库下拉菜单中禁用其余的选择选项,但不能。我正在生成一些品牌的动态列表,其中具有一些值,例如“所有品牌”,“本田”,“雅阁”等。如果用户选中“所有品牌”,我想禁用所有选择选项。

我该怎么做?

这是我的jQuery代码:

$("select.select2").change(function () {
    var selectedCountry = $(this).val();

    if (selectedCountry == 'all_brands') {
        $("dynamicList").prop("disabled", true)
    }
});

这是我的HTML和PHP代码:

<label class="text-danger">Select Brands</label>
<select class="form-control select2" id="brandAll" multiple="multiple" name="brand_id" data-placeholder="Select Brand to Deal" style="width: 100%;">
    <option value="all_brands" id="checking123">All Brands</option>
    <?php 
    foreach ($brand_list as $brand) {
        echo "<option value='$brand->id' class='dynamicList'>$brand->name</option>";
    }
?>
</select>

1 个答案:

答案 0 :(得分:0)

为了使用类选择器禁用元素,请尝试以下操作:

$(".dynamicList").attr('disabled','disabled');

注意:这将禁用所有选项,可能您需要使用““所有品牌”``

排除该选项
$(".dynamicList").attr('disabled','disabled');
$("#checking123").removeAttr('disabled');

错误#1 ,您正在使用multiple="multiple",然后$(this).val()返回一个数组,而不是单个值。

错误#2 ,您需要修复类选择器:dynamicList-> .dynamicList

这是完整的代码:

$("select.select2").change(function (){
       var selectedCountry = $(this).val();

       if (selectedCountry.length > 0 && selectedCountry[0] == 'all_brands') {
           $(".dynamicList").attr('disabled','disabled');
       }
});

编辑:

我建议也修复html样式,对属性使用双引号:

echo '<option value="' . $brand->id . '" class="dynamicList">' . $brand->name . '</option>';

甚至是这样:

<label class="text-danger">Select Brands</label>
<select class="form-control select2" id="brandAll" multiple="multiple" name="brand_id" data-placeholder="Select Brand to Deal" style="width: 100%;">
    <option value="all_brands" id="checking123">All Brands</option>
    <?php foreach ($brand_list as $brand) { ?>
    <option value="<?php echo $brand->id ?>" class="dynamicList"><?php echo $brand->name ?></option>
    <?php } ?>
</select>