2016-07-27 7 views
1

Ich habe eine select2, die Mehrfachauswahl ist.Ist es möglich, einen Verweis auf das Array ausgewählter Werte auf einem Select2 zu erhalten?

Es gibt zwei Möglichkeiten, um eine Option auszuwählen: Typen und wählen Sie im Auswahlfeld, Es gibt ein Menü, in dem Sie klicken können, und es wird es in der select2 Auswahlbox hinzuzufügen.

Es funktioniert dieses Mal nicht richtig, aber ich kann bereits Optionen über das Menü auswählen.

Was ich wissen möchte ist, ist es mir möglich, eine Referenz der Reihe ausgewählter Werte zu haben?

Weil das, was ich im Augenblick tue, Ich habe ein Array genannt, selectedValuesArray, wo, wenn ich aus dem Menü wählen, wird die ID der Auswahl der selectedValuesArray und

$('#selectbox').val(selectedValuesArray).trigger("change"); 

drücken Kann ich also einfach einen Verweis auf das Array des ausgewählten Werts selbst haben, also werde ich dort einfach Elemente pushen und spleißen?

EDIT: Select2.val() ist ein Array. Ich möchte einen Verweis auf dieses Array wie haben, var selectionArray = Select2.val(); Und ich möchte dieses Array dynamisch manipulieren. // wie eine Auswahl hinzufügen selectionArray.push ("1"); // oder eine Auswahl entfernen selectionArray.splice (indexOf ("1"), 1);

Ist es möglich?

+0

können Sie Werte von select2 wie ausgewählt erhalten. $ ('# Selectbox') val(); und dies wird Ihnen ein Array ausgewählter Optionswerte geben. – Qsprec

+0

Um zu klären, was Sie fragen. Sie erstellen derzeit ein eigenes Array mit ausgewählten Werten in einem Array namens 'selectedValuesArray'. Und im Grunde fragen, ob es einen Weg gibt, um dieses Array zu bekommen, ohne es selbst zu machen? Ist das, was du fragst? Ich bin mir nur nicht sicher, was die Frage hier ist. –

+0

$ ('# selectbox'). Val() gibt ein Array zurück? Das ist das Array, auf das ich einen Verweis haben möchte. Ich möchte dieses Array manipulieren, also muss ich kein anderes Array erstellen und es auf das Array $ ('# selectbox') setzen. Also kann ich einfach auf das Array drücken und es spleißen, nicht auf ein Array drücken und spleißen und das Selectbox-Array setzen. – Wreigh

Antwort

2

Wenn ich Ihre Frage richtig verstanden habe, sind Sie nach etwas wie folgt aus:

$("#e1").select2(); 
 

 
$("#checkbox").click(function() { 
 
    if ($("#checkbox").is(':checked')) { 
 
     $("#e1 > option").prop("selected", "selected"); 
 
     $("#e1").trigger("change"); 
 
    } else { 
 
     $("#e1 > option").removeAttr("selected"); 
 
     $("#e1").trigger("change"); 
 
    } 
 
}); 
 

 
$("#button").click(function() { 
 
    console.log($("#e1").val()); 
 
});
<script src="https://code.jquery.com/jquery-1.11.3.js"></script> 
 
<script src="http://cdnjs.cloudflare.com/ajax/libs/select2/3.2/select2.min.js"></script> 
 
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/select2/3.2/select2.css"> 
 

 
<select multiple id="e1" style="width:300px"> 
 
    <option value="AL">Alabama</option> 
 
    <option value="Am">Amalapuram</option> 
 
    <option value="An">Anakapalli</option> 
 
    <option value="Ak">Akkayapalem</option> 
 
    <option value="WY">Wyoming</option> 
 
</select> 
 

 
<input type="checkbox" id="checkbox" />Select All 
 
<input type="button" id="button" value="Check Selected" />

Original-Geige kann here finden.

+0

ich werde das versuchen :) – Wreigh

+0

Vielen Dank für Ihre Mühe, werde ich sicherlich versuchen, auch wenn es ein anderer Ansatz ist. Warte :) – Wreigh

2

In Ordnung, ich habe es geschafft zu erreichen, was Sie wollen. Hier ist der Code;

var selectedArray = $('#selectbox').val(); 
var selectElem = $('#selectbox').select2(); 

//delete '42' from array 
var index = selectedArray.indexOf('42'); 
data.splice(index,1); 
selectElem.val(selectedArray); 
selectElem.trigger('change'); 

//add '52' to array 
selectElem.push('52'); 
selectElem.val(selectedArray); 
selectElem.trigger('change'); 

this helps :)

+0

Ich werde es später versuchen danke: D – Wreigh

+0

hey Qsprec, danke für die Eingabe. Aber das war mein erster Versuch, und es funktionierte, aber @gotnull lieferte einen besseren Weg. – Wreigh

+0

Es ist okay, wenn Sie Ihr Problem gelöst haben, aber das funktioniert auch. Diesen Code jetzt auch bei meinem Projekt verwenden. – Qsprec

Verwandte Themen