2012-03-31 106 views
1

我想使用HTML5表单验证以及ajax表单发送。提交表单应该用prepend(),show()或类似的东西替换为其他内容。Opera提交()时使用preventDefault()验证失败字段验证()

我被检查提交()和验证()函数,并想出了这个:

$("#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 /铬完美的罚款。

任何想法?这是jQuery /歌剧错误,或者也许再一次Opera做得对,其余不是?

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

回答

1

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

根据this page,这个怪癖将被固定在Opera错误解雇之前,HTML5客户端验证12

CORE-35849提交事件形成

+0

非常感谢,我会无论如何,坚持使用jQuery Tools Validator,但不能等待所有主流浏览器(包括IE)的html5验证支持。 – Wordpressor 2012-04-01 16:27:42