2

条件が true の場合、デフォルトをオンに戻す必要があります。送信ボタンの onclick で条件を使用するため、クリックした後にそれを防ぎ、それは役に立たないため、その中に preventDefault を入れることはできません。

したがって、条件が真の場合、フォームアクションを再開する必要があります。また、onclickでは、初めて反応する必要があり、クリックするたびに+1する必要があります。

したがって、この場合、最初のクリックで成功を警告し、その後フォームページに進む必要があります。

HTML:

<form id="formName">
    <input type="submit" id="submitBtn" value="Submit" />
</form>

JS:

var a = 1;  
$("#formName").submit(function(e){
    e.preventDefault();
        $(document).on("click", "#submitBtn", function () {
                if(a != 1){
                    alert("Fail!");
                }
                else{
                    alert("Success");
                    return true;
                }
        });
    });

デモ: http://jsfiddle.net/Z9Zwz/

4

2 に答える 2

0

問題は、ユーザーが送信ボタンをクリックしたときにのみブラウザがフォームを送信できることです。JavaScript 側のsensu strictoからフォームを送信することはできません。ただし、これは AJAX を介してエミュレートできます (強くお勧めします)。

他のイベントの場合は、ボタンを でラップしdiv、バインドしclickてからdiv、後で手動でイベントをトリガーすることをお勧めします。

PSイベントハンドラーにイベントハンドラーを追加しないでください。イベント ハンドラをスタックしています。

于 2013-05-27T20:17:46.630 に答える
0

デフォルトの送信を防止することは、必要以上に困難です。クロスブラウザ/プラットフォームでいくつかの問題が発生しました。

私はついに送信ボタンを削除し、あなたが使用しているように見えるJQuery ajaxでフォームを送信することにしました。フォーム onsubmit をハードコーディングして false を返します。それはそれをずっと簡単にするはずです。

于 2013-05-27T20:07:42.113 に答える