2015-02-21 13 views
7

Ich verwende den Standardwert auf Last für eine ausgewählte (mit Select2) mit einem Code wie folgt einzustellen:Select2 Satz ausgewählten Wert neue Methode

$('#soff_gar').select2({placeholder: "Scegli", initSelection: true }).select2("val","<?php echo $garante; ?>"); 

Upgrade auf Version 4.0 auf der Konsole lese ich: „Select2: Die Methode select2("val") ist veraltet und wird in späteren Select2-Versionen entfernt. Verwenden Sie stattdessen $ element.val(). " Also versuchte ich meinen Code

$('#soff_gar').select2({placeholder: "Scegli", initSelection: true }).val("<?php echo $garante; ?>"); 

oder

$('#soff_gar').select2({placeholder: "Scegli"}).val("<?php echo $garante; ?>"); 

aber keiner von ihnen arbeitet zu ändern. Was mache ich falsch? Irgendein Hinweis?

Antwort

25

Von the release notes:

Sie sollten direkt auf dem darunter liegenden Element nennen .val statt. Wenn Sie den zweiten Parameter (triggerChange) benötigen, sollten Sie auch .trigger ("change") für das Element aufrufen.

$("select").val("1"); // instead of $("select").select2("val", "1");

Also, wenn Sie ein ausgewähltes Element haben:

<select id="mySelect"> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
</select> 

In der Vergangenheit hätte man es wie so initialisiert:

$("#mySelect").select2().select2("val","audi");

Dies wurde ersetzt durch:

$("#mySelect").select2(); 
$("#mySelect").val("audi").trigger("change"); 

Für Sie, ich denke, das übersetzen würde:

$('#soff_gar').select2({ 
    placeholder: "Scegli", 
    initSelection: true 
}); 
$('#soff_gar').val(<?php echo $garante; ?>).trigger("change"); 

, zwar gibt es einen Grund, warum Sie dies programmatisch tun?

Mit Bezug auf mein Beispiel würde dies auch funktionieren:

<option value="audi" selected>Audi</option> 

HTH

+1

Der Punkt ist also auf Trigger ("change")! Vielen Dank! Ich habe die Notizen gelesen, die Sie in Ihrer Antwort erwähnt haben, aber ich habe den Punkt nicht verstanden. Der Grund für meinen Code ist, wie ich die Seite erstelle und die Lesbarkeit des Codes erhöhe –

+0

Froh, dass ich helfen könnte :) –

+3

trigger select funktioniert, aber es ist wirklich trigger change event, wenn es Redirect nach Änderung gibt, wird die Seite sofort umgeleitet. Es funktioniert für mich so: $ ("# mySelect"). Val ("audi"). Select2(); – EngineerCoder

Verwandte Themen