2016-10-11 28 views
3

我有一個ajax調用返回的數據,我爲每個返回的數據行創建一個選項(下拉選擇)元素,我需要使其中一個默認選擇基於文本。但是價值並沒有被分配給我所選擇的那個人。以下是我的代碼:<option>值沒有設置

$.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)); 
    } 
}); 

我正在爲每個返回的行添加一個選項元素,並將默認選定的一個設置爲「用戶名」。當我在添加這個DOM後查看DOM時。我看到這一點:

<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> 

與「用戶名」文本選項元素不具有價值分配,任何想法,爲什麼發生這種情況?

回答

4

設置在對象的selected屬性爲好,像這樣:

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

@Phani,而不是做一個if語句,只是做'選擇:(值=='用戶名') –

+0

感謝您的評論,完全擺脫if語句。 – Phani

0

你可以嘗試這樣的事情。

$.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

我不很瞭解你的代碼,但你問,如果值是用戶名,我不喜歡看到一個用戶名值,因爲該值在DOM可能丟失......

如果您的選擇ID是ddlcriteria1,您可以選擇此表單的值。

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

    } 

這就是你需要

如果你的代碼是好的,你可以這樣做:

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

0

這是你的代碼修正:

$.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)); 
    } 
}); 

您應該在append函數的第二個參數中設置數組中的selected屬性。

+0

爲什麼所有那些在這篇文章的各種答案突然downvotes?請解釋爲什麼這個答案是錯誤的。 – Cladiuss

1

變好了:

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

與您的代碼,你要重寫的最後性質