2014-01-29 84 views
0

我有下面的JSON對象返回給我,並且想要更新頁面上已經存在的兩個文本框(txtAssigned01和txtAssigned02)的val()。我知道我應該用循環做這件事,但不知道如何動態選擇jQuery中的文本框。任何幫助,將不勝感激!循環通過JSON對象並動態輸出到帶有jQuery的文本框

JSON對象: enter image description here

到目前爲止的代碼:

function getAssignedPerson(projectID) { 
     $.ajax({ 
      url: "view-requests.aspx/getAssignedPerson", // Current Page, Method 
      data: JSON.stringify({ 
       projectID: projectID 
      }), // parameter map as JSON 
      type: "POST", // data has to be POSTed 
      contentType: "application/json", // posting JSON content  
      dataType: "JSON", // type of data is JSON (must be upper case!) 
      timeout: 10000, // AJAX timeout 
      success: function (result) { 

       $.each(result, function (i, v) { 
        $('#txtAssigned0'+ v).val(result.d[i]); <--- here's my problem 
       }); 

      }, 
      error: function (xhr, status) { 
       alert(status + " - " + xhr.responseText); 
      } 
     }); 
    } 
+0

你試過.attr(「name」,「somename」)? –

回答

1

這裏有一個fiddle

您在頁面上下面的HTML:

<input id='txtAssigned01'/> 
<input id='txtAssigned02'/> 

您的數據看起來像是回來如下:

var result = {d:['test1', 'test2']}; 

所以你需要循環數組d是在結果object:

$.each(result.d, function (i, v) { 
    console.log(i); 
    console.log(v); 
    var x = i + 1; 
    $('#txtAssigned0'+ x).val(v); //<--- here's my problem 
}); 

您還需要增加基於零的索引或更改您的命名con從零開始,這樣你將有vention是:

<input id='txtAssigned00'/> 
<input id='txtAssigned01'/> 

$.each(result.d, function (i, v) { 
    $('#txtAssigned0'+ i).val(v); 
}); 

這裏是一個updated fiddle

+0

作品完美! – user1431633

1

如果你想添加一個新的文本框,並將其命名,你可以使用以下命令:

$('<input>').attr({type: 'text').val("YOUR_VALUE").appendTo('#ID_OF_SOME PARENT_DOM_OBJ') 

您還可以添加更多內容,例如on_click處理程序,例如對於例如

$('<input>').attr({type: 'text').val("YOUR_VALUE").appendTo('#ID_OF_SOME PARENT_DOM_OBJ').click(function(){alert('hello');}); 
+0

我更新了我的問題。對不起,如果我沒有解釋得很好。文本框(txtAssignedPerson01和txAssignedPerson02)已經在頁面上,我只想用來自JSON對象的循環來更新它們的val()。那有意義嗎? – user1431633

+0

您的原始代碼段唯一的問題是,當您使用'$ .each'時,索引從0開始,因此您不妨將文本框的id更改爲'txtAssigned00'和'txtAssigned01',或更改'+我''+(i + 1)'。除此之外,你的代碼正在做你想做的事情。 –

0
 $.each(result, function (i, v) { 
      $("#main").append("<input type='text' value='"+v+"' id='txtAssigned_"+i+"' "); 
     }); 

其中#main會有一定的div id爲 '主',其中的文本框將顯示