2

setTimeout()フォーム送信で機能を試しています。ただし、関数を実行する前にフォームが送信され、タイムアウト関数内のものは実行されません。以下はコードスニペットです。

$(window).load(function () {
     $("#myform").submit(function() {
          setTimeout(function(){
               alert("me after 1000 mili seconds");
               return false;              
          }, 1000);

    });
};

この問題を解決する方法を教えてください...

4

4 に答える 4

4
$(window).load(function () {
     var submit = false;
     $("#myform").submit(function(e) {
          setTimeout(function(){
              alert("me after 1000 mili seconds");
              submit = true;
              $("#myform").submit(); // if you want            
          }, 1000);
          if(!submit)
              e.preventDefault();
     });
};
于 2013-03-14T10:53:00.890 に答える
2

フォームはすぐに送信されます。デフォルトのアクションを委任する必要があります。これはあなたのために働くはずです:

$(window).load(function () {
     $("#myform").submit(function(e) {
          e.preventDefault();

          setTimeout(function(){
              alert("me after 1000 mili seconds");
          }, 1000);
    });
});

このjsFiddle デモを参照してください。

于 2013-03-14T10:51:28.937 に答える
1

フォームの送信アクションを無効にしたい場合は、次を試してください。

$(window).load(function () {
     $("#myform").submit(function(e) {
          e.preventDefault();
          setTimeout(function(){
          alert("me after 1000 mili seconds");
          return false;

        }, 1000);

    });
});
于 2013-03-14T10:51:14.663 に答える
0

まず)、最後の行で閉じ括弧を忘れました

$(window).load(function () {
     $("#myform").submit(function(e) {
          e.preventDefault();
          setTimeout(function(){
          alert("me after 1000 mili seconds");
          return false;

        }, 1000);

    });
});
 ^---- here you forgotten to put brace.
于 2013-03-14T10:53:31.827 に答える