我们使用过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"));
});
答案 0 :(得分:0)
当添加的选项为1时,select2会自动将aria-selected="true"
添加到第一个选项。这可以防止它被选中。
这似乎是一个错误https://github.com/select2/select2/issues/3242
要解决此问题,您可以设置sj:select
,emptyOption="true"
属性,这是一种解决方法但会添加一个空选项并选择2将此空选项标记为selected
< / p>
仍在寻找更好的方法!