2012-10-31 97 views
3

我有一個在jQuery模式對話框中的編輯窗體。它有一個從數據庫直接填充的多選框。我正在編輯的記錄來自使用json的數據庫。有一個名爲problemids的字段,其中包含逗號分隔的ID。標記選項作爲選擇使用JSON的多選擇

多選是這樣的:

<select name="Problems" size="5" multiple="multiple" id="Problems"> 
    <option value="26">Backup battery error or cannot hold correct time.</option> 
    <option value="22">Battery contacts damage</option> 
    <option value="20">Belt clip damage</option> 
    <option value="31">Cannot flash firmware</option> 
    <option value="32">Cannot load task</option> 
    <option value="34">Case damage</option> 
    etc... 
</select> 

並且json回報看起來是這樣的:

[{ 
    "ModelID":33, 
    "AccountID":1, 
    "RandomID":"lo9876yhgbvfdr54", 
    "ManID":5, 
    "Model":"5090", 
    "ProblemIDs":"22,26", 
    "Active":true, 
    "DateCreated":"2/27/2012 5:35:00 PM", 
    "DateUpdated":"10/26/2012 2:04:00 PM", 
    "UpdatedBy":6998, 
    "CreatedBy":null 
}] 

而且我的ajax:

$.ajax({ 
    url: "ajax/edit-model.asp", 
    cache: false, 
    data: { recordid: recordid, rid: rid, crud: crud }, 
    type: 'GET', 
    dataType: "json", 
    error: function(xhr, textStatus, errorThrown) { 
     alert("An error occurrred! " + errorThrown); 
    }, 
    success: function(data, textStatus) { 
     $("#edit-dialogForm #RecordID").val(data[0].ModelID); 
     $("#edit-dialogForm #RID").val(data[0].RandomID); 
     $("#edit-dialogForm #ManID").val(data[0].ManID); 
     $("#edit-dialogForm #Model").val(data[0].Model); 
     if(data[0].Active){ 
      $('#edit-dialogForm input[name="Active"]:eq(0)').prop('checked', true); 
     }else{ 
      $('#edit-dialogForm input[name="Active"]:eq(1)').prop('checked', true); 
     } 
    } 
}); 

我怎樣才能項標記爲「選中「在我的多選?

+0

你的選擇有一個'輸入[名稱=「活動」]',但與名稱的輸入「Active'是待觀察,然後嘗試設置的輸入檢查屬性,雖然你可能想要在'select [name =「Problems」]元素中選擇一個選項,對吧? – dbf

+0

@dbf正確。爲了避免淹沒,我應該在表格中顯示所有字段。 「Active」是指2個單選按鈕,將標誌設置爲真/假。 – skyetech

+0

聽起來很有幫助,我有點退出_interpreting_或_assume_你可能沒有寫的東西;) – dbf

回答

2

小提琴 - http://jsfiddle.net/tariqulazam/TXcgh/

var data = { 
    "ModelID":33, 
    "AccountID":1, 
    "RandomID":"lo9876yhgbvfdr54", 
    "ManID":5, 
    "Model":"5090", 
    "ProblemIDs":"22,26", 
    "Active":true, 
    "DateCreated":"2/27/2012 5:35:00 PM", 
    "DateUpdated":"10/26/2012 2:04:00 PM", 
    "UpdatedBy":6998, 
    "CreatedBy":null 
}; 
$.each(data.ProblemIDs.split(','), function(index, element){ 
        $('#Problems').find('option[value="'+ element +'"]').attr('Selected', 'Selected'); 
}); 

UPDATE:修改你的成功回調像下面選擇標記

success: function(data, textStatus) { 
     $("#edit-dialogForm #RecordID").val(data[0].ModelID); 
     $("#edit-dialogForm #RID").val(data[0].RandomID); 
     $("#edit-dialogForm #ManID").val(data[0].ManID); 
     $("#edit-dialogForm #Model").val(data[0].Model); 
     if(data[0].Active){ 
      $('#edit-dialogForm input[name="Active"]:eq(0)').prop('checked', true); 
     }else{ 
      $('#edit-dialogForm input[name="Active"]:eq(1)').prop('checked', true); 
     } 
     $.each(data[0].ProblemIDs.split(','), function(index, element){ 
        $('#edit-dialogForm #Problems').find('option[value="'+ element +'"]').attr('Selected', 'Selected'); 
     }); 
    } 
+0

這將工作,但我很尷尬承認我不知道如何把我的JSON響應放入像你一樣的變量。否則,我明白你的代碼在做什麼。另外,如果ProblemID中沒有尾隨逗號呢? – skyetech

+0

你不必把它放在一個不同的變量中,你已經在成功回調中的一個名爲data的變量中擁有了它。 – Tariqulazam

+0

太棒了!這工作。我以爲我昨晚試過了,但我得到了「未定義」錯誤的「無法調用方法」拆分。謝謝您的幫助。 – skyetech

0

期權價值應等於陣列或價值,我們的標記值從jquery中選擇

$('#updatecategoryname')。multiselect('select',array);

Here Is The Example of Multi Select