0

フォームを検証するために validate.js を使用しています。フォームが検証されない場合、ユーザーがフォームを送信しようとすると、エラーを示すメッセージが表示されます。ユーザーが検証に合格すると、成功メッセージがポップアップ表示されます。問題は、validate.js がデフォルトの動作を妨げているため、フォームが実際に送信/アクションを実行しないことです。

フォームの送信を妨げているコードは次のとおりです。

if (event && event.preventDefault) {
    event.preventDefault();
} else if (event) {
    event.returnValue = false;
}

ここで完全な js を確認できます: http://jsfiddle.net/DBfks/

フォームが検証に合格しない場合、上記のコードはフォーム送信のデフォルトの動作を妨げているように思えますが、合格した場合はフォームを送信する必要があります。これは正しいです?成功メッセージを表示する代わりにフォームを送信する方法に関するアイデア (成功メッセージとエラー メッセージがどのように機能するかについては、jsfiddle を参照してください)

前もって感謝します。ここで実際のデモを見ることができます。

4

2 に答える 2

1

追加

 $("#myForm").submit();

フォームを送信する場所。

あなたの jsFiddle では、これは if/else です:

if (errors.length > 0) {
                        SELECTOR_ERRORS.empty();

                        for (var i = 0, errorLength = errors.length; i < errorLength; i++) {
                            SELECTOR_ERRORS.append(errors[i].message + '<br />');
                        }

                        SELECTOR_SUCCESS.css({ display: 'none' });
                        SELECTOR_ERRORS.fadeIn(200);

                    } else {
                        SELECTOR_ERRORS.css({ display: 'none' });
                        SELECTOR_SUCCESS.fadeIn(200);

                    }

(わかりました、コピペでちょっとめちゃくちゃになりました!)

したがって、エラーがあった場合は、すべてのエラーをエラー ボックスに追加して表示します。それ以外の場合は、それを検証したことを示します。しかし、それはあなたが望むものではありません。そこにフォームを送信する必要があります:

else {
    $("#yourform").submit();
}
于 2012-07-25T14:53:02.270 に答える
-1

コードが jQuery 送信で機能しなかった理由は、preventDefault メソッドが jQuery によるフォームの送信を妨げていたためです。修正は、次の行を単純に削除することでした。

if (event && event.preventDefault) {
    event.preventDefault();
} else if (event) {
    event.returnValue = false;
}
于 2012-07-26T19:44:03.753 に答える