1

Мы использовали распорки 2 jquery plugin. Мы изменили все варианты на jquery select2.Struts 2 jquery plugin 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"/> 

Каждая вещь отлично работает, ожидать, когда событие возвращается только один результирующий ряд, и выберите поле будет иметь только один вариант , В этом состоянии выбор 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:select, emptyOption="true" свойство, это какой-то, как работа вокруг, но добавит пустую опцию и выберите 2 Отметить этот пустой вариант как selected

Ищем лучший подход!

+0

'aria-selected =" true "означает, что он уже выбран. Вам нужно обновить select2 после вставки новых значений. –

+0

@AleksandrM thanks, выберите 2 обновления, когда соответствующая опция выбора флажка изменится, и вы можете увидеть обновленные параметры, но это делает его выбранным по ошибке. PS: Если вы имеете в виду вызов 'trigger ('change')', я сделал это, но мне не повезло :( –

+0

Вызов '.select2()' снова: http://stackoverflow.com/q/19899983/1700321 или что-то например: http://stackoverflow.com/q/16480910/1700321. –