在多个动态添加的表单上初始化jQuery validate()函数

时间:2012-06-11 19:44:06

标签: javascript jquery jquery-validate jquery-forms-plugin

有人建议最好在页面加载时初始化$('#form').validate({})函数,而不是点击事件:jquery.form/validate plugin only allow submit if input is changed

我想知道如何为多个动态添加的表单执行此操作,而不将$('#form').validate({})函数包含在on('click', 'input[type="submit"]',函数内。

以此代码为例:

var id="some identifier for the specific form that is submitted";
`$('#form'+id).validate({})`
  1. 首先如何创建区分每个表单所需的唯一标识符id
  2. 如果您在页面加载后不知道id该怎么办?因为它是动态创建的,例如,通过AJAX。
  3. 我一直这样做,但这是推荐的内容:

    $(document.body).on('click', 'input[type="submit"]', function(){
      var id=this.id;
      $('#form'+id).validate({});
    });
    

    想法?

    感谢, 添

1 个答案:

答案 0 :(得分:4)

如果页面加载时表单根本不存在,那么我不会在提交时初始化.validate(),而是在创建表单后立即对其进行初始化...

// code that dynamically creates #myNewform, then initialize validate()

$('#myNewform').validate();

validate()不应该在提交处理程序中,因为在单击提交按钮之前不会初始化验证。这会在表单验证失败并且必须第二次提交时导致问题。然后第二次在表单上重新初始化插件。有关类似问题,请参阅hereherehere。)

对于页面上的现有form ...

$(document).ready(function(){
    $('#myform').validate();
});

或多个form共享相同的验证选项......

$(document).ready(function(){
    ('.myform').each(function(){
        $(this).validate();
    });
});