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