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 回答