Select2禁用/启用特定选项

Madhukar Hebbar

我有一个类型为select2的列表。

<select id="list" class="form-control select2 select2-hidden-accessible" tabindex="-1" aria-hidden="true">
<optgroup label="Types">
<option value="None">None</option>
<option value="1">One</option>
<option value="2">Two</option>
</optgroup>
</select>

我想禁用值为= 1的选项,所以我这样做

$("#list>optgroup>option[value='1']").prop('disabled',true);
   Result:// <option value="1" disabled>One</option>

它工作正常;但是,如果我想重新启用禁用的选项,我尝试使用以下代码,但仍然禁用了select2选项。

$("#list>optgroup>option[value='1']").prop('disabled',false);
$("#list>optgroup>option[value='1']").removeProp('disabled');
  Result://   <option value="1">One</option>

但奇怪的是禁用该选项的属性被删除。但select2选项保持禁用状态。

没有得到如何解决这个问题。需要帮忙。

更新:如果我检查select2的DOM,即使将其删除禁用,它也具有此属性。

<li class="select2-results__option" id="select2-template-type-list-result-4qd3-merge" role="treeitem" aria-disabled="true">One</li>

如果我使aria-disabled =“ false”,它将启用。无法找到原因。

克劳

可能最简单的方法是.select2(…)更改更改的禁用属性后再次调用该元素。

http://jsfiddle.net/xoxd2u15/

由于select2用自定义HTML元素替换了原始选择字段(并隐藏了原始元素),并且显然不会在调用后不断“监视”该原始选择元素的选项以使其禁用状态不断变化,因此您必须在调用之后再次对其进行调用更改状态,以便它从原始元素的选项中读取当前属性值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章