2017-06-05 1 views
1

In einem Formular habe ich zwei Mehrfachauswahl. Ich kann Elemente aus select1 fügen Sie Artikel von select2 mit den folgenden jQuery-Funktionen Select2 oder zu entfernen:Mehrfachauswahl hinzufügen/entfernen in jquery auswählen

<script type="text/javascript"> 
    function addProject() {  
     return !$('#select1 option:selected').remove().appendTo('#select2'); 
    } 

    function removeProject() { 
     return !$('#select2 option:selected').remove().appendTo('#select1'); 
    } 
</script> 

<select multiple id="select1" class="form-control"> 
@for(p <- projects) { 
    option value="@p.getName">@p.getName</option> 
} 
</select> 

<button type="button" class="btn btn-primary" onclick="addProject();" > 
    <span class='glyphicon glyphicon-plus'></span> 
</button> 
<button type="button" class="btn btn-primary" onclick="removeProject();" > 
    <span class='glyphicon glyphicon-minus'></span> 
</button> 

<select name="projects" multiple id="select2" class="form-control"> 
</select> 

Das Problem ist, dass, wenn ich Artikel in der Select2 und senden Sie das Formular I alle Werte erhalten. Wenn ich Elemente hinzufüge und entferne oder umgekehrt, erhalte ich keine Werte.

Ich habe versucht, eine weitere jquery-Funktion hinzuzufügen, um alle Elemente in select2 auszuwählen, bevor das Formular gesendet wurde, aber nicht funktioniert hat.

function select_projects() { 
    $('#select2').children('option').attr('selected', 'selected'); 
} 

Wie kann das Problem lösen?

+0

starten: https://stackoverflow.com/questions/13268083/select2-changing-items-dynamically – Zenoo

+0

Ich habe aber nicht scheint auf mein Problem bezogen zu sein. –

+0

Wie in dieser Antwort gesagt, müssen Sie die Funktion '.select2()' erneut aufrufen, wenn Sie die Elemente Ihrer Auswahl ändern möchten. – Zenoo

Antwort

1

löste ich die select_projects Wechsel() Funktion wie folgt:

function select_projects() { 
    $('#select1 option:selected').attr('selected', false); 
    $('#select2').children().prop('selected', true); 
}