3

我正在使用 jQuery Validation Plugin 1.9.0 和 jQuery 1.7.2。

我希望使用 jquery 验证插件验证我的表单。它在 Firefox 20.0.1 和 IE 10 中运行良好。但在 Chrome (26.0.1410.64 m) 和 Opera (12.14) 中,我无法在表单中单击取消而不阻止验证。

这是我的 JavaScript 代码:

 submitHandler: function(form) {
  if (this.submitButton.value != 'cancel') {
   $(form).hide();
   $('#load').show();
   $(form).submit();
  }
  else {
  event.preventDefault();
  }
 }

当我在 FF 和 IE 上单击取消时,我按预期返回我的网页主页,但是当我在 Chrome 和 Opera 中执行此操作时,我的错误消息会显示为表单未完全填写。在这两种情况下, event.preventDefault() 都会被调用,但似乎行为因导航器而异。

您知道可能出了什么问题吗?

谢谢你的帮助 !

4

1 回答 1

4

你误解了.preventDefault(). 它不是为了防止函数的默认行为。它旨在取消常规元素的内置行为,即从锚标签中删除导航和历史记录等。

请参阅:http ://api.jquery.com/event.preventDefault/

AFAIK,您不能以编程方式打开和关闭验证。一旦你用 初始化插件.validate(),就没有办法“取消”初始化它。

但是,要简单地使用“取消”按钮,有几种方法……一种是确保将取消按钮保留在外部<form></form>然后使用click处理程序对其执行其他操作。

演示:http: //jsfiddle.net/TZVA6/1

或者,正如 Rocket Hazmat 所指出的,另一种方法是赋予buttonatype="button"防止默认submit操作的属性。

演示:http: //jsfiddle.net/TZVA6/2/

于 2013-08-22T19:42:03.300 回答