Opera使用preventDefault()对submit()的字段验证失败

时间:2012-03-31 22:34:37

标签: jquery validation post opera preventdefault

我想使用HTML5表单验证和ajax表单发送。提交表单应该使用prepend(),show()或类似的内容替换为其他一些内容。

我正在检查submit()和validate()函数,并想出了这个:

$("#form").submit(function(e){
    e.preventDefault();

    $.post('sendmail.php', { name: $("#form-field-name").val(), email: $("#form-field-email").val(), message: $("#form-field-message").val()} );

   // now prepend the new "sucessfully sent" div
});

看起来e.preventDefault();在Opera中禁用了表单验证,它在Firefox / Chrome中运行得非常好。

有什么想法吗?这是jQuery / Opera的错误,或者Opera可能再一次正确,剩下的不是吗?

示例:http://jsfiddle.net/gw3My/

1 个答案:

答案 0 :(得分:1)

这似乎是Opera的一个怪癖。不确定哪个浏览器是正确的,但this page解释了这个问题并建议使用this.checkValidity()进行解决方法。根据您的需求进行调整。

根据this page,这个怪癖将在Opera 12中修复。

  

CORE-35849在HTML5表单中进行客户端验证之前错误地提交事件