2011-05-06 104 views
5

我在使用ajax提交表单时遇到了一些麻烦。使用AJAX提交HTML 5表单?

由于HTML5表单已在输入标记中进行“必需”验证,因此不需要进行JavaScript验证检查。但是,正因为如此,我不知道如何使用JavaScript(jQUERY)在验证检查通过后提交表单。换句话说,我怎么知道验证检查是否已经通过?

例如: ??条件?? (在加载提交的页面之前,我应该写什么条件)? (“div”)。load(finishSubmittingForm.html) )};

有什么想法?

谢谢

回答

3

有一些API方法可用。见developer.mozilla.org

但是,我强烈建议您在依靠HTML5验证之前仔细思考。在这个时候它肯定有一些主要的缺点,因为它仍处于“初期阶段”。我现在说,你最好使用JS验证库; jQuery Validation非常好。

+0

我同意,真正的验证应该在服务器上完成,因为您不应该信任来自客户端的数据。 – James 2013-05-15 13:26:19

2

from规格:

如果用户按下提交按钮。浏览器必须首先验证表单,如果表单有效,则会触发提交事件。

这意味着,您可以简单地钩入表单的提交事件并启动您的ajax。

$('form').bind('submit', function(){ 
    //Ajax implementation here 
}); 

但是,Opera在这里有一个非常讨厌的bug。 Opera首先触发提交事件,然后验证表单。

通过使用HTML5的验证方法,您可以解决此问题。这看起来是这样的:

$('form').bind('submit', function(){ 
    if(!this.checkValidity || this.checkValidity()){ 
     //Ajax implementation here 
    } 
}); 

关于HTML5格式规范的当前状态。有一些部分,应该扩展形式规格。目前在FF4和其他版本中实现的功能(FF4与Opera和Chrome相比具有更少的表单功能,但实现起来非常好)对于生产足够稳定。

如果要在所有浏览器中使用HTML5表单,我会建议webshims HTML5 forms polyfill。它不仅能够填充无法使用的浏览器,还能修复浏览器中的一些错误,这些错误并未根据规范实现表单功能。例如,上面提到的Opera bug会自动修复。