javascript - 找不到动态添加的表单元素 ID

标签 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]”; 第二个警报返回未定义。告诉我它找不到那个字段......

我添加了一个 fiddle :fiddle

在我的 fiddle var 结果中,代表了我从 ajax 调用中返回的内容。我的最终目标是通过按 yes 添加每个字段,如果空白则变为红色......

最佳答案

您没有 id 等于“addPerson[name][0]”的元素。向 DOM 添加新的 input 元素时,必须在其 idname 属性中包含 rowNum。 p>

名称/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>";

关于javascript - 找不到动态添加的表单元素 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24063386/

相关文章:

javascript - 使用 javascript onclick 方法运行 jquery 插件

javascript - 在 Ajax 回调中访问 `this`,全部在对象内

javascript - Chrome 错误 : "Origin file://is not allowed by Access-Control-Allow-Origin"

jquery - 如何在提交 AJAX 后清除 FORM

javascript - onchange 事件监听器未在文本框上触发

javascript - CSS 响应式图像 slider

javascript - 通过 AJAX 将 session 变量传递给 PHP 文件

javascript - jqgrid viewGridRow对话框大跨度和图标

jquery - 使用 Ajax 的 CakePHP Paginator - 未调用 Ajax 调用

javascript - Google 可视化数据表更改背景颜色