验证表格两次

Ric*_*ard 6 jquery jquery-validate

代码事实:

  1. 我正在使用jQuery
  2. 还使用jQuery Validate插件

我的表格的特点:

  1. 我有一个分为两部分的表格.这是一种形式,但由两个大的div分手
  2. 形式的肉(名字,姓氏等)在第一部分.
  3. 我还在表格的第一部分有一个动态表格,因此人们可以自己注册,最多可以注册20个人.
  4. 最后,有一个注册码.这些代码最多只能使用20次.意思是如果一个人注册自己,另外19个注册码注册,test那就是测试不再是可用的注册码.

问题:

假设注册码test已被使用了18次.因此验证器如果能够自己注册并且还有两个人就可以正常工作,它会弹出一条消息,说明超出限制.但是,如果他们输入代码testFIRST然后添加两个人,它会将表单验证为true并继续.以下是验证器规则中注册码的代码:

regis_code: {
    required: true,
    reg_code: true,         
    remote: { 
        url: "Private/Code_checker.php", 
        data: {
            num: function() {
               return num_rows;
            },
            },
        async: false 
    }
}
Run Code Online (Sandbox Code Playgroud)

所以PHP脚本工作得很好.我需要做的是在填写表格时进行验证,但在提交之前也要验证.另一个问题是表单第一部分的按钮不是提交按钮,它只是一个隐藏当前div的按钮,并显示表单的下一个div(第2部分).如何在键入时进行验证,并在单击按钮转到第2部分时进行验证?

这是按钮代码和验证器的东西:

$('.button2').click(function() {
    if(val.form()) {
        $('.box').animate({ height:520, left: '-=50', top: '+=30', width: '-=350' }, 750);
        $('div.box label').animate({width: '-=100%'},500);
        $('#part1').fadeOut('slow', function() {
            $('#part2').fadeIn('slow');
        });
        $('#PaySubmit').fadeIn('slow');
    }
});
var val = $('#everything').validate({...});
Run Code Online (Sandbox Code Playgroud)

jer*_*oen 2

valid()您可以随时使用该方法(如果validate()已被调用...),因此您可以在提交表单时强制验证表单:

if (!$("#everything").valid()) {
  // do whatever you need to do
  return false;     // cancel the submit
}
Run Code Online (Sandbox Code Playgroud)

您还可以将事件处理程序附加到选择其他人员数量的字段或动态添加新人员并使用相同方法时的字段。

编辑:另一种方法valid()是仅检查特定的表单字段而不是整个表单:

$("#everything").validate().element("#reg_code");
// assuming that the registration code field has an ID called reg_code
Run Code Online (Sandbox Code Playgroud)