2009-03-20 11 views

答えて

6

関数がfalseを返した場合、フォームは提出されません。

$('#form').submit(function(){ 
    return validateForm1() 
      && validateForm(document.forms['dpart2']) 
      && validateForm(document.forms['dpart3']);           
       } 
}); 
3

validateForm(...)とvalidateForm1は()ブール値を返します(真が何の検証エラーが発生していないことを意味します)、その後、あなたがそれをしようとした場合:

$('#form').submit(function(){ 
    if (!validateForm1() || !validateForm(document.forms['dpart2']) || !validateForm(document.forms['dpart3'])) { 
     return false; 
    } 
}); 
7
$('#form').submit(function(){ 
    return (validateForm1() && 
      validateForm(document.forms['dpart2']) && 
      validateForm(document.forms['dpart3'])) 
}); 

基本的には、イベントハンドラ関数でfalseを返します。

3

自動的に起こる考え方:徹底的なクライアント側の検証を実装したとしても、想像できる可能性のある無効なリクエストデータをサーバー上で受け取れるように準備してください。

クライアント側の検証によって、サーバー側の検証が行われることはありません。使いやすさの単なるボーナスです。

4

他の解決策のいくつかには、怠惰な失敗があります。すべてのエラーが表示されるように、すべての検証を実行する必要があります。あなたの検証メソッドは、失敗した場合にfalseを返すという前提があります。

$("#myform").submit(function() { 

    var ret = true; 
    ret = validateForm1() && ret; 
    ret = validateForm(document.forms['dpart2']) && ret 
    ret = validateForm(document.forms['dpart3'])) && ret 
    return ret; 

});

このようにすべてのバリデーターが呼び出されますが、失敗のブール値は失敗します。

関連する問題