5

検証の1つが偽の場合、フォームが送信されないようにするにはどうすればよいですか?

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

5 に答える 5

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

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

于 2009-03-20T09:34:56.103 に答える
6

関数がfalseを返す場合、フォームは送信されません。

$('#form').submit(function(){
    return  validateForm1() 
            && validateForm(document.forms['dpart2']) 
            && validateForm(document.forms['dpart3']);                                         
              }
});
于 2009-03-20T09:34:03.373 に答える
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;

});

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

于 2009-03-20T21:43:39.627 に答える
3

validateForm(...)およびvalidateForm1()がブール値を返す場合(trueは検証エラーが発生しなかったことを意味します)、それを実行しようとします。

$('#form').submit(function(){
    if (!validateForm1() || !validateForm(document.forms['dpart2']) || !validateForm(document.forms['dpart3'])) {
        return false;
    }
});
于 2009-03-20T09:33:45.760 に答える
3

自動的に思いつく考え: 徹底したクライアント側の検証を実装したとしても、サーバー上で無効なリクエスト データを受信する準備をしておく必要があります。

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

于 2009-03-20T12:33:00.497 に答える