2010-12-13 18 views
2

Ich habe ein Formular mit den folgenden Code:Mit ExtJS mit mehreren wählen

<select multiple="multiple" id="something" class="boo" name="foo"> 
    <option value="40">AAAAA</option> 
    <option value="39">BBBBB</option> 
    <option value="15">CCCCC</option> 
</select> 

Derzeit wird diese Form hat eine binded onChange Funktion, die wie folgt aussieht:

var updateValues = function(event, target, object){ 
    var selectbox = Ext.get(target.id); 
    var values = []; 
    for(i=0; i<selectbox.dom.options.length; i++){ 
     if (selectbox.dom.options[i].selected) 
      {values.push(selectbox.dom.options[i].value);} 
    } 
    callSomeFunc(values); 
} 

Sie mich zeigen richtige Art und Weise, um dies mit ExtJS zu tun. Ich denke, es sollte eine Funktion geben, die ein Array ausgewählter Werte zurückgibt, genau wie jQuerys val(). Wenn ich nicht korrekt bin, schreibe bitte einen Kommentar.

+0

Es wäre viel einfacher, wenn Sie tatsächlich Ext Komponenten anstelle von einfachem HTML-Formular verwendet. – Mchl

+1

Scheint, dass es keine systemeigene ExtJS-Funktion gibt, die mehrere Auswahlvorgänge behandelt. Die Verwendung von Ext-Komponenten wäre für eine große Anzahl von Anwendungsfällen ein ziemlich hoher Aufwand. – edgars

Antwort

0

Wenn Sie mehrere Auswahl kombiniert mit ComboBox-ähnliche Funktionalität möchten, würde ich empfehlen, die SuperBoxSelect Benutzererweiterung zu verwenden. Wenn Ihnen das fertige Erscheinungsbild nicht gefällt, können Sie es leicht ändern, indem Sie das enthaltene CSS ändern oder entfernen.

Die Komponente bietet hervorragende Methoden zum Abrufen der ausgewählten Werte. Wenn der Benutzer Werte auswählt, merkt sich die Komponente die Werte und speichert sie intern. Umgekehrt, wenn ein Benutzer Werte entfernt, behandelt die Komponente diesen Status auch für Sie. Sie müssen lediglich die Methoden aufrufen, um die Werte abzurufen, sobald Sie bereit sind, das Formular zu senden.

Hier ist eine Demo-Seite, wenn Sie interessiert sind. Es ist sehr einfach in Ihrem Javascript enthalten, also keine Sorge, dass es eine Benutzer-Erweiterung ist:

http://www.technomedia.co.uk/SuperBoxSelect/examplesRemote.html

Verwandte Themen