event.preventDefault()在Chrome和Opera中不起作用

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

我想用jqueryvalidation插件validation我的表单。 它在Firefox 20.0.1和IE 10中运行良好。但在Chrome(26.0.1410.64米)和Opera(12.14)中,我无法在不阻止validation的情况下单击取消。

这是我的javascript代码:

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

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

你知道什么可能是错的吗?

谢谢你的帮助 !

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

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

AFAIK,您不能以编程方式打开和关闭validation。 使用.validate()初始化插件后,没有方法可以“取消”初始化它。

但是,要简单地使用“取消”按钮,有几种方法…一种是确保将取消按钮保留在

,然后使用click处理程序对其执行其他操作。

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

或者另一种方法,如Rocket Hazmat所指出的,是给button一个type="button"属性,该属性可以阻止默认的submit动作。

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