select2不会禁用或清除

Dav*_*913 12 jquery-select2

我有一个辅助选择奴隶到主要选择(选择一个商店,然后选择一个部门 - 相同的选择一个国家,然后选择一个州).

无论我撕掉多少其他代码,我绝对无法使用select2('enable',false)和('data',null)方法.

<select id="stores">
  <option value="foo">foo</option>
</select>
<select id="depts">
  <option value="bar">bar</option>
</select>

// ...some logic that selects a store, then fetches that store's depts ...

$('#depts').select2('enable',false);// does not disable control
$('#depts').select2('data',null); // does not clear control
Run Code Online (Sandbox Code Playgroud)

所以我被迫这样做:

$('select#depts').empty(); // clears HTML element
$('#depts').select2(); // re-enhances select w/ select2
$('#depts').select2('disable',true); // disables 
Run Code Online (Sandbox Code Playgroud)

它在jsfiddle中表现得很好,所以我甚至无法发布示例并请求帮助.我只是......难过.

pra*_*ant 29

// to disable
$('#statusSelect').select2('disable');

//to enable
$('#statusSelect').select2('enable');
Run Code Online (Sandbox Code Playgroud)


imp*_*335 11

这适用于所有浏览器:

$('#statusSelect').select2('destroy');
$('#statusSelect').prop('disabled', true);
$('#statusSelect').select2();
Run Code Online (Sandbox Code Playgroud)

这为您提供了禁用的select2输入.

要简单地重新启用:

$('#statusSelect').select2('destroy');
$('#statusSelect').prop('disabled', false);
$('#statusSelect').select2();
Run Code Online (Sandbox Code Playgroud)

不利的一面是,当select2被销毁并重新应用时,这会导致您的选择框在瞬间改变外观.

此外,旧版本的select2不支持"只读"和"禁用".


cmc*_*lty 5

您可能正在遇到select2错误1104.不幸的是,它仍然是IE8-10中的一个问题,但它不是select2的错.问题是IE在禁用元素时不会触发propertychange事件,也不会实现其他浏览器使用的MutationObserver功能.幸运的是,我编写了一个小的jQuery插件,允许在禁用元素时触发propertychange事件.你可以在这里找到它.

$('#originalSelect').fireOnDisable().select2();
$('#originalSelect').prop('disabled', true);
Run Code Online (Sandbox Code Playgroud)

现在应该在IE8-10中工作.如果您需要支持IE6-7,那么您就是自己的!


Lia*_*sby 0

你不需要这个吗:

$('#depts').prop('已禁用', false);

和这个问题一样