单击按钮时的jQuery表单验证

aji*_*nmu 44 jquery jquery-validate

我有一个简单的页面,表单和窗体外的按钮.我试图在按钮单击上验证表单.我已经在document.onready函数中添加了表单验证规则.但是表单未经过验证.

HTML: -

<html>
<head>
   <script src="lib/jquery1.5.2.js"></script>
   <script src="lib/jquery.validate.js"></script>
   <script src="lib/myjs.js"></script>
</head>
<body>

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

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

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

JS: -

$(document).ready(function(){

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

   }
})

$('#btn').click(function() {
 $("#form1").validate();  // This is not working and is not validating the form
});

});
Run Code Online (Sandbox Code Playgroud)

知道什么是错的吗?

Spa*_*rky 119

在你的click处理程序中,错误就是.validate()方法; 它只初始化插件,它不验证form.

为了消除在其中的submit按钮的需要form,用于.valid()触发验证检查...

$('#btn').on('click', function() {
    $("#form1").valid();
});
Run Code Online (Sandbox Code Playgroud)

jsFiddle演示

.validate()- 在DOM就绪时初始化插件(带选项)一次.

.valid()- 检查验证状态(布尔值)或随时触发验证测试form.

否则,如果容器中有一个type="submit"按钮,则form不需要特殊的click处理程序和.valid()方法,因为插件会自动捕获它.

没有click处理程序的演示


编辑:

您的HTML中还有两个问题...

<input id="field1" type="text" class="required">
Run Code Online (Sandbox Code Playgroud)
  • class="required"在声明规则时你不需要.validate().这是多余的,多余的.

  • name属性缺失.规则.validate()由他们声明name.该插件依赖于唯一name属性来跟踪输入.

应该...

<input name="field1" id="field1" type="text" />
Run Code Online (Sandbox Code Playgroud)

  • 我认为你说多余和冗余是具有讽刺意味的. (7认同)