JQuery验证器无法正常工作

时间:2013-04-30 09:09:43

标签: jquery zend-framework jquery-validate

我的html中有zend形式:

<form action="" method="POST" id="orderForm" class="cmxform">
...
<td valign="top"><br /><label for="cname">Name</label></td><td><?= $this->form->name ?></td><td rowspan="3">
...

我的zend表单(我为验证器设置了属性):

...
    ->setAttrib('class', 'required')
    ->setAttrib('id', 'cname');
...

然后我尝试调用验证器(#nextButton - 不提交,只需按钮):

$(document).ready(function() {
        $("#nextButton").click(function() {
            $("#orderForm").validate();
        });

我的验证员不想做任何事,感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

你可以用来调试的很多东西......首先检查你的控制台是否有任何错误......其次,在你的表单中操作属性放置类似#或javascript:void();

在你的js中......尝试将验证码放在点击事件之外,如此

$('#orderForm').validate({
     rules: {
         name: required
     }
});

$('#nextButton').click(function(e){
     e.preventDefault();
     if( $("#orderForm").valid()){
      $('#orderForm').submit();
     }
});

答案 1 :(得分:1)

您的代码:

$(document).ready(function() {
    $("#nextButton").click(function() {
        $("#orderForm").validate();
    });
}); // <- missing ?

你的问题是由于对.validate()在这里真正为你做的事情的误解造成的。

  • .validate()是插件的初始化 ...它不是测试表单的方法。

  • 验证测试由各种事件触发并全自动。您无需在提交按钮上捕获click事件...插件会自行完成所有操作。

jQuery的:

$(document).ready(function() {

    $("#orderForm").validate(); // initialize the plugin

});

呈现HTML输出:

<form id="orderForm">
    <input type="text" id="cname" name="cname" class="required" />
    <button id="nextButton">next</button>
</form>

工作演示:http://jsfiddle.net/NWga4/

请记住,您的输入字段还需要name属性才能使插件正常运行。


如果您不想提交表单但仅“测试”表单的有效性,请使用.valid()方法...

$(document).ready(function () {

    $('#orderForm').validate(); // initialize the plugin

    $("#nextButton").click(function(e) {
        e.preventDefault();
        $('#orderForm').valid(); // trigger a test
    });

});

DEMO#2:http://jsfiddle.net/QRdzg/