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

7
我想使用jQuery验证插件http://docs.jquery.com/Plugins/Validation来验证一些asp.net文本框,但似乎这些元素必须在form标签之间。如果只有几个元素,我几乎不会称其为表单,因此我不想将它们包装在form元素内。是否有解决方法?此外,如果表单上有两个按钮,一个是取消按钮,一个是提交按钮,我希望仅在点击提交按钮时才进行表单验证,而不验证取消按钮,应该如何实现?

一个表单是告诉浏览器数据应该发送到哪里的方式。如果没有表单,控件就毫无用处...除非你在JavaScript中伪造一个表单,这违反了规则2:http://icant.co.uk/articles/pragmatic-progressive-enhancement/#build - Quentin
关于问题的第二部分,如果只是验证提交按钮是否被点击呢。我有一个取消按钮,当单击它时,什么都不应该发生,但它仍然会验证表格。 - Xaisoft
你做完整的提交吗?如果你的取消按钮只是清除字段,为什么要将它制作成提交按钮而不是普通按钮?如果你将其制作成普通按钮,我认为它不会触发验证。你可以制作两个按钮,在其中一个按钮中调用提交方法(你可以用jQuery创建)。接下来,你可以使用jQuery验证中的valid()方法。这样就可以进行像ajax post这样的操作了。 - chobo2
2个回答

2

Jquery验证插件需要一个表单元素才能正常工作,因此你应该将表单字段(无论有多少个)放在一个表单内。

你可以告诉验证插件不要在表单提交时起作用,然后在正确的提交按钮被点击时手动验证表单。

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


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

});

2
我只有几个元素,我不会把它们称为表单,所以我宁愿不将它们包装在表单元素中。
如果这些元素不在表单标签内,那么它就不是一个有效的HTML文档,因此根据浏览器如何处理格式错误的HTML文件,脚本行为可能会变得奇怪。
大多数浏览器会隐式创建一个表单,但现在您无法控制表单的行为。默认情况通常是将POST操作表单定位到请求页面的URL。
问题是,您可能不知道要在JQuery中使用哪个选择器来获取对表单的引用...但我想$(“form”)会起作用。
当单击提交按钮时验证,而不验证取消按钮。
该插件拦截并运行在表单的submit事件上。通常取消按钮是具有type属性设置为“reset”的HTML输入元素:
<input type="reset" value="cancel" />
类型的按钮不会导致表单提交,因此也不会触发验证。
如果您使用其他类型的按钮,请确保onclick事件返回false。这将取消表单的提交操作,但仍允许您在单击按钮时运行自己的javascript代码。

我正在使用asp:Button来实现取消和提交功能。 - Xaisoft
我已经解决了第二部分。我将取消按钮的UseSubmitBehavior属性设置为false,这使它成为一个普通的input type=button而不是type=submit,从而解决了问题。我决定使用LiveValidation脚本。它运行得相当不错。感谢您的帮助。 - Xaisoft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接