我有一个辅助选择奴隶到主要选择(选择一个商店,然后选择一个部门 - 相同的选择一个国家,然后选择一个州).
无论我撕掉多少其他代码,我绝对无法使用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不支持"只读"和"禁用".
您可能正在遇到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,那么您就是自己的!
| 归档时间: |
|
| 查看次数: |
30186 次 |
| 最近记录: |