Die änderung mit jQuery wählen Sie nicht die option ausgewählte anzeigen
Habe ich die versteckte form, mit ein paar Felder auswählen und einige Felder. Klicken Sie auf die Schaltfläche zeigen, dass form und legen Sie einige Werte in die Felder ein. Die input-Felder sind gefüllt mit den angegebenen Werten, aber ich habe ein problem mit den select-Feldern.
Mithilfe dieses Codes:
$("#form select[name=user]").val(value);
option mit diesem Wert bekommt das Attribut "selected" (kontrolliert im Firebug), aber wählen Sie Feld zeigt immer noch "Wählen" (erste option).
Habe ich versucht zu tun, Schärfe und Unschärfe nach Einstellung Wert, aber das hat nicht funktioniert entweder.
Irgendwelche Vorschläge?
Dies ist so ziemlich der standard form:
<form action="#" id="form" class="fix">
<div class="holder">
<label>User:</label>
<select name="user" class="styled">
<option value="0" selected>Choose</option>
<option value="1">User 1</option>
<option value="2">User 2</option>
</select>
</div>
</form>
Und durch Aufruf der jQuery-Anweisung:
$("#form select[name=user]").val('2');
$("#form").show();
Bekomme ich im Firebug:
<form action="#" id="form" class="fix" style="display:none">
<div class="holder">
<label>User:</label>
<select name="user" class="styled">
<option value="0">Choose</option>
<option value="1">User 1</option>
<option value="2" selected>User 2</option>
</select>
</div>
</form>
aber der text ist, wählen Sie " bleibt "Wählen". Wenn ich ein Formular Einreichen, wird der Wert korrekt übergeben.
Als wenn ich reset das Formular und wählen Sie eine option, den text der ausgewählten option wird korrekt angezeigt. Das ist, was ist seltsam für mich.
- Es funktioniert mit jQuery 1.8.3 und 1.9.0
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe eine Lösung gefunden. Ich vergaß zu nennen change-Ereignis für . Ich wusste nicht, dass jQuery nicht tun es automatisch. Also der code für die Lösung ist:
Ich hatte das gleiche problem mit dropdown-html-tag. Und bekam die Lösung.
Was ich-Analyse während der Benutzung .ändern Sie(), .attr() und .prop() freigegeben ist unten.
$('#db_service option[value=1]').attr('selected', 'selected');
Analyse: Es set-Attribut des select-Tags option selected=ausgewählt, als ich sah, source-code. Aber auf dem Bildschirm ändert, sind NICHT Erschienen.
$('#db_service option[value=1]').prop('selected', 'selected');
Analyse: Es wird NICHT eingestellt-Attribut des select-Tags option selected=ausgewählt, als ich sah, source-code. Aber auf dem Bildschirm, änderungen sind ERSCHIENEN.
Meine Lösung:
Verwendet beides .attr() und .prop() für mehr perfekte Ergebnis
$('#db_service option[value=1]').attr('selected', 'selected');
$('#db_service option[value=1]').prop('selected', 'selected');
$('#db_service').val("1").change()
Ich hatte das gleiche problem. Bei http://api.jquery.com/attr/, es gibt einige Anmerkungen über .prop() Methode statt .attr(). Auch, wie Jovica Antwort geändert-option erscheint nur in Firefox (20.0 ist meine version), wenn wir uns die .change () - Methode am Ende.
Ich hatte das gleiche Problem, ich habe versucht, ändern Sie die ausgewählte option ein wählen Sie eine form hat, verborgen war.
Den
.attr(attribute, value)
war nicht als option angezeigt wurde, nicht zeigen, bis auch das ausgewählte Attribut korrekt aktualisiert. Die.prop(property,value)
hat den trick.den
'#form select[name=user]'
versucht zu wählen<select name="user">
- element, das ein child eines Elements mit der id "form"... z.B.:Ich glaube, Sie wollen die folgenden:
Sollte jetzt wählen Sie eine
<select name="user">
- element, das ein Kind von einer form, wie zB:Wollte ich erwähnen, dass ich versucht hier alles-und nur das hinzufügen der folgenden Zeile direkt oberhalb
$("#form select[name=user]").val(value);
für mich gearbeitet: