2012-10-31 96 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