动态添加的表单元素ID未找到

时间:2014-06-05 14:49:54

标签: javascript jquery ajax forms

我有一个表单,用户可以在其中单击按钮并根据需要添加其他字段。稍后,用户点击提交,我通过ajax进行一些错误检查。如果其他字段为空白,我想用红色突出显示它们,让用户知道所需的数据。

jquery添加行:

  $('#addPerson').click(function(){
  var row = "<div id='row_"+rowNum+"'><div class='leftBigRow'><input type='text' class='field' id='addPerson[name][]' name='addPerson[name][]' placeholder='persons name'></div>";
  $('.additionalPeople').append(row);
  rowNum++;

我的ajax调用返回一串有错误的字段ID。例如结果可能是:

 //firstname,lastName,zipCode,...etc

所以我的错误检查是:

 if(result.length > 0)
     {
       var errors = result.split(",");
       for (i=1;i<errors.length;i++)
       {
        alert(errors[i]);
        $('#'+errors[i]).addClass('error');
        alert($('#'+errors[i]).val());
       }
       $("#subForm").attr("disabled", "disabled");
      }

第一个警报返回我所期望的“addPerson [name] [0]”; 第二个警报返回undefined。告诉我它找不到那个领域......

我添加了一个小提琴:fiddle

在我的小提琴变量结果中表示我从ajax调用中获得的内容。我的最终目标是通过按“是”将每个字段添加为红色,如果空白....

3 个答案:

答案 0 :(得分:1)

您没有id等于&#34; addPerson [name] [0]&#34;的元素。向DOM添加新的input元素时,您必须在rowNumid属性中加入name

不要包括&#34; [&#34;和&#34;]&#34;在name / id属性中。使用:

var row = "<div id='row_"+rowNum+"'><div class='leftBigRow'><input type='text' class='field' id='addPerson_name_"+rowNum+"' name='addPerson_name_"+rowNum+"' placeholder='persons name'></div>";

答案 1 :(得分:1)

声明动态元素的id时,不能在那里使用数组。您可以将其与已有的rowNum计数连接起来。

我在这里更新了你的JSFiddle:http://jsfiddle.net/Myra4/3/

(观察我如何更改动态元素的id和模拟的'结果'变量)

我是在JSFiddle中为你做的,所以你可以立即验证它是否有效。

答案 2 :(得分:0)

使用.on绑定以后创建的DOM元素。

http://api.jquery.com/on/