2010-09-08 55 views
1

我有兩個組合框和一個URL給我發送json數據以在組合框內部填充。我如何使用相同的URL來填充組合框。如何使用相同的json來填充兩個組合框?

`Can I use` $(".loctype").autocomplete({ 

source: function(request, response){ 

$.ajax.. 
} 

}); 

我不確定這是否可行。如果有人指着我走向正確的方向,我將不勝感激。

我的html代碼:

<p> 
      <label for="ltype">Location Type</label> 
      <select id="loctype"> 
      <option value="1">Warehouse</option> 
      <option value="2">New Burg</option> 

      </select> 
     </p> 
     <p> 
      <label for="sku">Pallet Status</label> 
      <select id="pstatus"> 
      <option value="3">3</option> 
      <option value="4">4</option> 

      </select> 
     </p> 

回答

1

不知道如果我理解你的具體問題,但如果返回多個字段:

return Json(new { Result = "success", location = whatever.location_id, status = whatever.pstatus }); 

您可以分配:

if (data.Result == "success") { 
     $('#loctype').val(data.location); 
     $('#pstatus').val(data.status); 
} 

編輯我假設你發回選定的值。要向下拉列表添加選項,您需要返回文本和值。

$('#loctype').append($('<option></option>').val(data.location_id).html(data.location_name)); 

如果你也想的是要選擇新的價值,追加.attr("selected", true)

1

您不需要jQuery來填充組合框。請參閱this

獲取json數據後,您可以遍歷它並填充組合框。比方說,你的數據是這樣的:

data = {'loctype':["Warehouse", "New Burg"], 'pstatus':[3,4]}; 

現在,讓我們通過它遍歷並填充列表:

for(var i=0; i < data.loctype.length; i++) { // loctype and pstatus arrays have same length 
    addOption(data.loctype[i], data.loctype[i], "loctype"); 
    addOption(data.pstatus[i], data.pstatus[i], "pstatus "); 

} 

的方法,addOption如下:

function addOption(text,value,cmbId) { 
    var newOption = new Option(text, value); 
    var lst = document.getElementById(cmbId); 
    if (lst) lst.options[lst.options.length] = newOption; 
}