1

私が持っている文書の最後に:

<script>
    $("#submitEvent").click(function() {
        $("#eventForm").submit();
    });


    $(document).ready(function() {


    $('#eventForm').submit(function() {
        console.log("I am on submit");

    }); });
</script>

現在、submitEvent はフォーム内にないボタンであり、on.click イベントを持つ理由です。

ボタンが押されると、フォームの送信が正しくトリガーされます。

<form id="eventForm" action="${contextPath}/dashboard/event/new"
                        method="post">

現在、送信が発生したときに別のイベントが発生することを期待していますが、実際には何らかの理由で無視されます。console.log の代わりに ajax を使用するつもりはありませんが、console.log でさえ何も出力しないため、イベントはトリガーされません。

更新、あなたが提案したようにまだ何もしませんでした:-):

$(document).ready(function() {

    $("#submitEvent").click(function() {
        $("#eventForm").submit();
    });




    $('#eventForm').submit(function() {
        console.log("I am on submit");

    });


    });
4

3 に答える 3

1

フォーム送信ハンドラーが呼び出されていないと言う理由がコンソールに出力が表示されない場合は、フォームを送信すると完全に破棄され、ページが置き換えられることに注意してください。コンソールがクリアされる前に、ログ メッセージを表示する時間がない可能性があります。


コメントで、あなたは次のように述べました。

うーん、どうすれば ajax が呼び出されるかどうかを確認できますか。

console.logステートメントにブレークポイントを設定し、ブレークポイントがヒットするかどうかを確認することで確認できます。または、1990 年代スタイルをデバッグする場合は、alert.

ただし、フォームの結果がページを置き換える場合、フォーム送信ハンドラー内から ajax を実行することは信頼できないことに注意してください。(フォームの結果がページを置き換えない場合は、おそらく問題ありません。) これは ajax が非同期であるためです。つまり、送信ハンドラーは ajax を開始できますが、ティアダウンによってキャンセルされる前に終了する時間がありません。

于 2013-09-24T16:54:25.140 に答える
1

コードを ready 関数内に移動するだけです。

<script>
    $(document).ready(function() {
       $("#submitEvent").click(function() {
          // run ajjax code here
       });

       $('#eventForm').submit(function(e) {
           e.preventDefault(); // stops the page from submiting
           console.log("I am on submit");
        }); 
     });
</script>

コードを更新しました。フォームを送信する必要はありません。クリックして ajax を実行するだけです。

于 2013-09-24T16:44:29.583 に答える