我有一个表单,用户可以在其中单击按钮并根据需要添加其他字段。稍后,用户点击提交,我通过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调用中获得的内容。我的最终目标是通过按“是”将每个字段添加为红色,如果空白....
答案 0 :(得分:1)
您没有id
等于&#34; addPerson [name] [0]&#34;的元素。向DOM添加新的input
元素时,您必须在rowNum
和id
属性中加入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元素。