0

我有以下表格:

<form id="fromWiw" action="..." method="post">                    
  ...
  <div class="controls span5 pull-left">
      <label class="control-label" for="Quantity">@Resources.Quantity</label>
      <input class="span12" id="Quantity" name="Quantity" type="number" min="0" value="0" required />
  </div>
  <div class="controls span5 pull-left">
      <label class="control-label" for="Price">@Resources.Price</label>
      <input class="span12" id="Price" name="Price" required />
  </div>
  ...
</form>

对于验证部分,我有这个代码片段:

form.submit(function() {
    form.validate(
        {
            rules: {
                Quantity: { required: true, number: true},
                Price: { required: true, number: true }
            }
        });
});

问题 验证工作正常,它正在检测价格和数量何时为空。但是,当价格输入包含非数值(例如文本)时,验证成功通过。验证适用于 Quantity 输入。我在这里做错了吗?

4

1 回答 1

2

你的代码:

form.submit(function() {
    form.validate({
        ...
    })
})

“验证适用于 Quantity 输入。我在这里做错了吗?”

是的,你是。

.validate()只是表单上插件的初始化方法......它不是测试方法,因此不属于submit处理程序内部。它应该在 DOM 就绪时调用一次。该插件将自动捕获submit事件就好了。

$(document).ready(function() {

    $('#myform').validate({
        // rules & options
    });

});

您还将 HTML5 验证与 Validation 插件混合使用。

无需将required属性放入 HTML 中,也无需required.validate(). 该插件将从任一方法中获取它;并且在使用插件时,它会novalidate="novalidate"在标签中动态添加一个属性<form>以禁用任何 HTML5 验证。

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

于 2013-08-01T23:55:09.520 回答