2016-06-15 45 views
0

我想验证一个表单两个部分,当我点击btn按钮,然后验证正确完成,但是当我点击btnn它不工作,始终验证字段1jQuery验证:验证形式两个部分

这是我的代码

的jQuery:

$(document).ready(function() { 
    $("#form1").validate({ 
     rules: { 
      field1: "required" 
     }, 
     messages: { 
      field1: "Please specify your name" 

     } 
    }) 

    $('#btn').click(function() { 
     $("#form1").valid(); 
    }); 
    $("#form1").validate({ 
     rules: { 
      field2: "required" 
     }, 
     messages: { 
      field2: "Please specify your name" 

     } 
    }) 

    $('#btnn').click(function() { 
     $("#form1").valid(); 
    }); 
}); 

HTML

<form id="form1" name="form1"> 
    Field 1: <input name="field1" type="text" /> 
    Field 2: <input name="field2" type="text" /> 
</form> 

<div> 
    <input id="btn" type="button" value="Validate"/> 
    <input id="btnn" type="button" value="Validate"/> 
</div> 

有什么建议吗?

回答

1

按照设计,您不能在同一表单上调用.validate()方法两次。 .validate()方法用于初始化,第二个实例将始终被忽略。

你这里有两种选择:

  1. 认沽部分2到自己<form>容器。

OR

  • 一些其他特技像显示/隐藏的表单字段,或使用.rules()方法来添加/删除动态取决于被点击了哪个按钮的规则。如果您显示/隐藏这些字段,则在.validate()的同一个实例中声明所有规则,并利用此插件的默认行为,即忽略所有隐藏的字段。
  • 既然您还没有透露您的多部分表格的工作原理,或者想要验证两个部分的目的,我会告诉您最简单的解决方案,这是建议#1。

    jQuery的

    $(document).ready(function() { 
    
        $("#form1").validate({ // initialize `form1` 
         rules: { 
          field1: "required" 
         }, 
         messages: { 
          field1: "Please specify your name" 
         } 
        }); 
    
        $('#btn').click(function() { 
         $("#form1").valid(); 
        }); 
    
        $("#form2").validate({ // initialize `form2` 
         rules: { 
          field2: "required" 
         }, 
         messages: { 
          field2: "Please specify your name" 
         } 
        }); 
    
        $('#btnn').click(function() { 
         $("#form2").valid(); 
        }); 
    }); 
    

    HTML

    <form id="form1" name="form1"> 
        Field 1: <input name="field1" type="text" /> 
    </form> 
    
    <form id="form2" name="form2"> 
        Field 2: <input name="field2" type="text" /> 
    </form> 
    
    <div> 
        <input id="btn" type="button" value="Validate"/> 
        <input id="btnn" type="button" value="Validate"/> 
    </div> 
    

    这里是在多步骤的形式如何可以做另外一个答案:

    https://stackoverflow.com/a/20481497/594235

    +0

    我们不能只用一种形式做到这一点? – Tarzan

    +0

    @Tarzan,做什么?你仔细阅读了整个答案吗? – Sparky

    +0

    对不起,确定显示/隐藏技巧。 – Tarzan