2014-01-29 40 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为 '主',其中的文本框将显示