1

我想将 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/

4

1 回答 1

1

这似乎是 Opera 中的一个怪癖。不确定哪个浏览器是正确的,但这个页面解释了这个怪癖并建议使用this.checkValidity(). 使其适应您的需求。

根据这个页面,这个怪癖将在 Opera 12 中得到修复。

CORE-35849 在 HTML5 表单中的客户端验证之前错误地触发了提交事件

于 2012-04-01T03:42:44.177 回答