2011-09-13 7 views
2

新しいタイプ(電子メール、URLなど)のHTML5フォームを使用して、サブミットイベントをJS関数にバインドしました。Ajaxを介して送信する前にフォームでブラウザ検証を使用するにはどうすればよいですか?

問題は、ブラウザが最初にこの関数を呼び出してから、検証システムを呼び出すのですが、サブミット関数が偽を返さなかった場合にのみ、が呼び出されます。

または、私はAjaxリクエストとその関数内のすべての作業を行います。つまり、常にfalseを返します。

submit js関数の呼び出しの前にブラウザ検証を実行するにはどうすればよいですか?

ありがとうございました。

答えて

5

仕様から、ブラウザはまずフォームを検証し、フォームが有効であれば送信イベントをトリガーする必要があります。つまり、送信イベントの中でAjaxを送信するだけで済みます。

現在、Operaは送信イベントを発生させてから検証を行います。あなたは、単にcheckValidity法を使用して、手動で提出するリスナーの内部検証を呼び出すことができます。

$(form).bind('submit', function(){ 
    if(!this.checkValidity || this.checkValidity()){ 
     //do ajax and return false 
    } 
}); 

注:これはあまりにも、これらのブラウザで無効なイベントをdoubbleできることを。あなたがそれらを使用しない場合、evrythingはうまくいくはずです。あなたがそれらを使いたいと思っていて、それを二倍にしたくないのであれば、webshims libを使うことができます。これは、このブラウザと他のブラウザで異なる問題を修正します。

関連する問題