0

我的 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();
        });

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

4

2 回答 2

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
    });

});

演示#2:http: //jsfiddle.net/QRdzg/

于 2013-04-30T14:36:59.857 回答
1

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

在你的 js 中 .. 尝试像这样将验证代码放在点击事件之外

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

$('#nextButton').click(function(e){
     e.preventDefault();
     if( $("#orderForm").valid()){
      $('#orderForm').submit();
     }
});
于 2013-04-30T10:25:17.853 回答