1

我们已经使用了struts 2 jquery插件。我们已将所有选择更改为jquery select2Struts 2 jquery插件sj:select和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"/> 

每一件事情做工精细,希望当事件只返回一个结果行,并选择框中将只有一个选项。在这种状态下,select 2将不允许用户选择此选项!

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

我只看到这个问题,当我重新加载选择,我不知道为什么会发生这种情况。

我与jQuery的一个简单的测试只能选择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

当加入的选项之一,选择2全自动加aria-selected="true"到第一个选项。这阻止了它被选中。

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

为了解决这个问题,你可以设置sj:selectemptyOption="true"财产,这是一些如何解决办法,但会添加一个空的选项,并选择2个标记此空的选项,selected

仍在寻找更好的方法!

+0

'aria-selected =“true”'意味着它已被选中。插入新值后需要更新select2。 – 2015-04-08 12:49:46

+0

@AleksandrM谢谢,选择2更新时关联的选择框选项更改,您可以看到更新的选项,但它使它被错误地选中。 PS:如果你的意思是调用'trigger('change')',我做了,但没有运气:( – 2015-04-08 13:23:13

+0

再次调用'.select2()':http://stackoverflow.com/q/19899983/1700321像这样:http://stackoverflow.com/q/16480910/1700321。 – 2015-04-08 13:29:44