1

我们使用了 struts 2 jquery 插件。我们已将所有选择更改为jquery select2

$('select:visible:not').select2()

有很多sj:selects通过 ajax 重新加载的选择,例如:

    <s:select id="areaCode" name="areaCode" list="areas" listKey="top"
        listValue="areaName" headerKey=""
        headerValue="Select It"/>

    <sj:select id="realodedBranches" name="openerBranchNo"
        list="realodedBranches" href="%{reloadbranch}" listKey="branchCode"
        listValue="branchName" reloadTopics="reloadBranches"/>

一切正常,期望事件只返回一个结果行,并且选择框只有一个选项。在这种状态下,选择 2 将不允许用户选择此选项!

如果我更改结果以返回多个结果,它工作正常。

我仅在重新加载选择时才看到此问题,我不知道为什么会发生这种情况。

我只用 jquery select 2 做了一个简单的测试,它工作正常,添加的选项是可选的:

<select id="mainSelect">
</select>    

<button id="clickMe">Click Me </button>


$('select').select2();

$('#clickMe').click(function(){
     $('#mainSelect')
         .append($("<option></option>")
         .attr("value","val1")
         .text("text1"));    
});
4

1 回答 1

0

当添加的选项是一个时,select2 会自动将第一个选项添加aria-selected="true"到第一个选项。这会阻止它被选中。

这似乎是一个错误https://github.com/select2/select2/issues/3242

要解决它,您可以设置sj:select,emptyOption="true"属性,这是一种解决方法,但会添加一个空选项并选择 2 将此空选项标记为selected

仍在寻找更好的方法!

于 2015-04-07T05:29:26.153 回答