2016-07-21 5 views
4

Ich möchte ein Auswahlfeld laden, in dem automatisch der vom Benutzer ausgewählte Wert angezeigt wird.Legen Sie einen Optionswert wie ausgewählt

Ich erhalte eine Json-Daten vom Server mit den Benutzerinformationen. Stichprobe von Daten ist: {"color":"red"}

In meinem HTML-Code Ich habe wählen Sie die Option wie folgt aus:

<select id="input_user" class="selectinput" disabled="true"> 
<option value="n/a"> n/a </option> 
<option value="red"> red </option> 
<option value="green"> green </option> 
<option value="yellow"> yellow </option> 
<option value="blue"> blue </option> 
<option value="white"> white </option> 
</select> //this will only show "n/a" as default 

ich diesen Code versucht, den Rot-Wert als Standard zu machen, aber nicht funktioniert.

var user_color= data[2].color; // this was from the json data 
document.getElementById('input_user').selectedIndex = user_color; 

Irgendwelche Hilfe?

+0

Ist 'Daten' ein Array? Hast du den JSON vom Server geparst? –

+1

check [demo] (https://jsfiddle.net/uos8hpL2/) – guradio

+0

Mögliches Duplikat von [Ausgewählte Option der Auswahlbox setzen] (http://stackoverflow.com/questions/4680075/set-selected-option-of- Select-Box) – guradio

Antwort

7

Wie Sie diese Frage mit jQuery markiert haben, können Sie setzen einfach die val() auf der select direkt:

var user_color = 'red'; //data[2].color; 
 
$('#input_user').val(user_color);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="input_user" class="selectinput" disabled="true"> 
 
    <option value="n/a">n/a</option> 
 
    <option value="red">red</option> 
 
    <option value="green">green</option> 
 
    <option value="yellow">yellow</option> 
 
    <option value="blue">blue</option> 
 
    <option value="white">white</option> 
 
</select>

+1

Ich denke Rorys Antwort ist richtig. Sie setzen Ihren Auswahlindex, anstatt den Wert zu aktualisieren. –

+0

jetzt kann er so viel abschreiben, wie er will: D. Diese Antwort ist richtig und ich kann mir nicht vorstellen, dass dies zum ersten Mal richtig gestellt und beantwortet wurde. – TehSphinX

+0

was ist das anders? document.getElementById ('input_user'). value = Benutzerfarbe; –

1

nach viel Forschung, ging ich endlich wieder die jQuery-Dokumentation zu sehen Das gab mir die richtige Antwort:

1/Löschen Sie alle Attribute von Tags, die bereits mit dem 'ausgewählten' Attribut

0 sind
function remove_selected(){ 
    $("select option").removeAttr('selected'); 
} 

2/Ich benutze die Stütze() Funktion von jQuery die 'ausgewählt' Attribut auf den gewünschten Tag

// USE THE FUNCTION TO REMOVE ALL ATTRIBUTES ALREADY SELECTED 
remove_selected(); 

// Set the tag <option> attribute to 'selected' 
$('select option[value="ThatYouWant"]').prop({defaultSelected: true}); 

In HTML zuweisen ergibt dies:

<select> 
    <option value="something">Something</option> 
    <option value="ThatYouWant" selected>That you want</option> 
    <option value="OtherValue">Other value</option> 
</select> 

Es ist sauber und ohne Grate, danke für Ihr Feedback und Korrekturen, zu genehmigen, wenn Sie diese Lösung richtig finden. Mit freundlichen Grüßen, Raf.

Quelle: https://api.jquery.com/prop/

+0

+1 für diese Alternative; Im Gegensatz zur angenommenen Antwort ändert dies den HTML-Code. Es hat mir geholfen, einen dom-Knoten vor der weiteren Duplizierung zu modifizieren. –

+0

Vielen Dank für die Rückkehr, in der Tat habe ich zuvor Änderungen am DOM aber nicht auf dem HTML beobachtet, es sieht aus wie ein Hack, aber hey was können wir tun ... –

Verwandte Themen