2016-06-13 9 views
1

In der Geige angeschlossen, habe ich zwei Optionen im Voraus "Dänemark" und "Frankreich", wenn die gewählte wählen lädt. Wenn ich mehr Werte in der Auswahlbox auswähle und auf die Schaltfläche Löschen klicke, möchte ich die gewählte Auswahl mit den gleichen vorgefüllten Werten "Dänemark" und "Frankreich" wiederherstellen.Vorgewählte Werte in Gewählt wiederherstellen Wählen Sie

Ich möchte diesen Code ändern, um ausgewählte Werte vorzufüllen.

$("#Clear").click(function() { 
    $('.chosen-select option').prop('selected', false).trigger('chosen:updated'); 
}); 

JSFiddle

UPDATE: Es wäre wirklich gut, wenn es einen Weg gibt so ist, dass es keine Rolle spielt, welche Optionen vorgefüllt sind, aber sie sollten wiederhergestellt werden, falls vorhanden.

Antwort

1

Was Sie brauchen, ist ein Array von vorgewählten Option Werten zu erstellen. Dann können Sie eine forEach Schleife mit diesem Array verwenden, um den Wert selected zu ändern und den Anfangszustand vor der Aktualisierung des Triggers zu erhalten.

$("#countries").chosen(); 

let preselected = []; 

$('[selected]').each((i, node) =>{ 
    preselected.push($(node).attr('value')); 
}); 

$("#Clear").click(function() { 
    $('.chosen-select option').prop('selected', false); 

    preselected.forEach(pre => { 
     $(".chosen-select option[value='" + pre + "']") 
     .attr('selected', 'selected') 
     .trigger('chosen:updated'); 
    }); 
}); 

Fiddle

Wie Sie here es gibt nichts im Plugin sehen Sie dies zu erreichen, verwenden können, es scheint, dass Sie es aktualisieren, indem Sie Ihre DOM und Trigger zu tun haben. Ich würde den Code von Luckyape und meine Antwort verwenden und mischen.

+0

ist es eine Möglichkeit, es zu machen, so dass es keine Rolle spielt, welche Optionen vorbelegt sind, aber sie sollten gestellt werden, wenn überhaupt? – Jake

+0

Nun könnten Sie Schleife wenn onload um zu wissen, welche Elemente ausgewählt sind und es abrufen. –

+0

Siehe aktualisierten Code und Geige. –

2

Geben Sie dies geht ein

$("#countries").chosen(); 

$("#Clear").click(function() { 
    $('.chosen-select option').prop('selected', false); 
    $('.chosen-select').val(['Denmark', 'France']).trigger('chosen:updated'); 
}); 

http://jsfiddle.net/y5cnd018/

+1

Dies funktioniert auch, aber gibt es einen Weg, um es so zu machen, dass es keine Rolle spielt, welche Optionen vorgefüllt sind, aber sie sollten, falls vorhanden, wiederhergestellt werden? Jose hat oben eine gute Lösung gegeben, aber ich frage mich, ob etwas gewählt wurde, das das schon tut, wie du es gemacht hast. – Jake

+1

Sehen Sie meine Bearbeitung @Jake es scheint, dass nichts in den Dokumenten ist. –

Verwandte Themen