jQuery禁用并清除(Select2)字段的值

时间:2018-07-25 14:51:28

标签: javascript jquery jquery-select2

我有一个与Select2一起使用的字段,名为location,用户可以在其中输入一个或多个位置。然后,我有一个复选框noCity,如果没有location,则用户可以检查它。

我要归档的内容:选中noCity,禁用location,删除占位符并清除所有值。

我已存档的内容:选中noCity时,location被禁用,未选中,启用时以及加载表单并选中noCity时,停用操作也正确完成。

我的问题:我似乎无法删除字段location的值,也无法删除占位符。 .attr("placeholder", '', this).val('', this)似乎不起作用,其他试用失败。

到目前为止我的代码:

$('#location').select2({
placeholder: 'Enter a city'
});

$("#noCity").click(function () {
    if (jQuery(this).prop("checked")) {
        jQuery("#location")
            .prop("disabled", this)
            .attr("placeholder", '', this)
            .val('', this)
        ;
    } else {
        jQuery("#location")
            .prop("disabled", false)
            .attr("placeholder", 'Enter the name of the city')
            .val('')
        ;
    }
});

if ($('#noCity').is(':checked')) {
    jQuery('#location')
        .prop('disabled', this)
        .attr('placeholder', '')
        .val('');
}

和html:

Location: <select id="location" multiple="multiple" style="width: 300px">
<option>New York</option>
<option>Hong Kong</option>
<option>Amsterdam</option>
</select>
<br>
<label>No city:<input id="noCity" type="checkbox"></label> 

这里是JSFiddle

我的问题:如何确保在选中noCity,禁用location,删除占位符并清除所有值时(以及在{{ 1}}处于未选中状态,字段noCity是否再次启用,并且占位符返回)?

编辑:我的问题与this one类似,但是我尝试在未选中复选框(仍不起作用)并且使用Select2版本4的情况下实现这一点。

1 个答案:

答案 0 :(得分:1)

您只需将以下代码添加到noCity被检查事件中即可。我运行测试就可以了:))

$("#location").select2().val("0").trigger("change");