Jquery验证插件是否需要表单标记?

时间:2010-01-21 06:14:38

标签: asp.net jquery jquery-validate

我想使用找到的jQuery Validation插件验证一些asp.net文本框 http://docs.jquery.com/Plugins/Validation,但似乎元素必须位于表单标记之间。如果我只有几个元素,我很难称之为一个表单,所以我宁愿不将它们包含在表单元素中。有没有解决的办法?另外,如果我在表单上有两个按钮,取消和提交按钮,我希望表单仅在单击提交按钮时验证,而不是取消按钮,这是如何完成的?

2 个答案:

答案 0 :(得分:2)

jquery validate插件需要表单元素才能运行,因此您应该在表单中包含表单字段(无论多少)。

您可以告诉验证插件不要在表单提交时运行,然后在单击正确的提交按钮时手动验证表单。

例如,使用类来标识正确的提交按钮:


$(document).ready(function() {
  var form = $("form");

  form.validate({
    onsubmit: false,
  });

  //Validate form only if validation submit button is clicked
  //Allows cancel submit buttons to function properly
  $('.validate', form).click(function() {
    if (form.valid()) {
      form.submit();
    }
    else {
      form.validate().form();
    }
  });

});

答案 1 :(得分:2)

  

我只有几个元素   我很难称之为表格   而不是把它们包裹在里面   形式元素。

如果元素不在表单标记内,那么它不是有效的HTML文档,因此脚本中的行为可能会变得很糟糕,具体取决于浏览器如何处理格式错误的HTML。

大多数浏览器会隐式创建表单,但现在您无法控制表单的行为。默认值通常是针对请求页面的URL的帖子操作表单。

问题是,您可能不知道在JQuery中使用哪个选择器来获取对表单的引用......但我认为$("form")可以解决问题。

  

验证何时单击提交按钮,但不是取消按钮

插件拦截并运行表单的提交事件。通常,取消按钮是html输入元素,type属性设置为“reset”:

<input type="reset" value="cancel" />

重置类型按钮不会导致表单提交,这不会触发验证。

如果您使用其他按钮类型,请确保onclick甚至返回false。这取消了表单的提交操作,但仍允许您在单击按钮时运行自己的javasctipt。