2016-10-11 3 views
3

Ich habe Daten von einem AJAX-Aufruf zurückgegeben, ich erstelle eine Option (Dropdown-Auswahl) -Element für jede zurückgegebene Zeile von Daten, ich muss eine von ihnen standardmäßig basierend auf Text ausgewählt. Aber der Wert wird nicht dem zugeordnet, den ich "ausgewählt" habe. Im Folgenden finden Sie meinen Code:<option> Wert wird nicht gesetzt

Ich füge ein Optionselement für jede zurückgegebene Zeile hinzu, und die Standardeinstellung wird als "Benutzername" ausgewählt. Wenn ich mir das DOM ansehe, nachdem dieses hinzugefügt wurde. Ich sehe dies:

<option value="1">First Name</option> 
    <option value="2">Last Name</option> 
    <option selected="selected">Username</option> 
    <option value="4">Email</option> 
    <option value="8">Department</option> 
    <option value="9">Status</option> 
    <option value="10">Position</option> 
    <option value="11">Role</option> 
    <option value="12">User Group</option> 
    <option value="13">Course Code</option> 
    <option value="15">Enrollment Location</option> 
    <option value="16">Organization</option> 

Die Option Element mit „Benutzername“ text kein Wert zugewiesen ist, keine Ahnung, warum dies geschieht?

Antwort

4

die in dem Objekt selected Attribut setzen, wie folgt aus:

$('<option>', { value: key, selected: true }) 
+3

@Phani statt eine if-Anweisung zu tun, tun Sie einfach 'ausgewählt: (Wert == 'Benutzername')' –

+0

Danke für den Kommentar, loszuwerden, wenn Aussage insgesamt. – Phani

0

Sie können so etwas versuchen.

$.each(JSON.parse(r.d), function (key, value) { 
    if (value == 'Username') { 
    $('#ddlcriteria1') 
     .append($('<option selected="selected" value='+ key+'>') 
     .text(value)); 
    } 
    else { 
    $('#ddlcriteria1') 
     .append($('<option>', { value: key }) 
     .text(value)); 
    } 
}); 
0

Ich verstehe nicht sehr viel Code, aber Sie werden fragen, ob Wert Benutzername ist ich, keinen Wert wie Benutzername, weil der Wert vielleicht in dem dom fehlt ...

Wenn Ihre Auswahl-ID ddlcriteria1 ist, können Sie den Wert für dieses Formular auswählen.

if (value == 'Username') { 
    $('#ddlcriteria1').val('Username'); 

    } 

es ist alles, was Sie

benötigen Wenn Ihr Code, den Sie dies tun können, ist gut: auch

$.each(JSON.parse(r.d), function (key, value) { 
    if (value == 'Username') { 
    $('#ddlcriteria1').val('Username'); 
    } 
    else { 
    $('#ddlcriteria1') 
     .append($('<option>', { value: key }) 
     .text(value)); 
    } 
}); 
+0

der Wert für die

0

Dies ist Ihr Code behoben:

$.each(JSON.parse(r.d), function (key, value) { 
    if (value == 'Username') { 
    $('#ddlcriteria1') 
     .append($('<option>', { value: key, selected: "selected" }) 
     .text(value)); 
    } 
    else { 
    $('#ddlcriteria1') 
     .append($('<option>', { value: key }) 
     .text(value)); 
    } 
}); 

Sie sollten das Attribut selected im Array im zweiten Parameter der append-Funktion festlegen.

+0

Warum alle diese downvotes plötzlich auf verschiedene Antworten dieses Beitrags? Bitte erklären Sie, warum diese Antworten falsch sind. – Cladiuss

1

Machen Sie es gut:

var optionElement = $('<option/>').attr({ 
            "selected":"selected", 
            "value": key 
            }); 
$('#ddlcriteria1') 
    .append(optionElement) 
    .text(value)); 

mit Ihrem Code überschreiben Sie die letzten Eigenschaften

Verwandte Themen