settimeout不工作我不知道为什么

时间:2013-07-18 10:22:53

标签: javascript

                $('form[name=addform]').submit(function() {
                    if(error == true){
                        return false;
                    }else{


                        $('#loading').empty();
                        $('#loading').append("<img src = './images/ajax-loader.gif'/>");
                        $('#loading').show();

                        setTimeout(function(){
                              return true;
                        }, 4000);


                    }
                    error = false;
                });

我需要在执行返回true之前加载gif图像。我请不要使用ajax请帮助

2 个答案:

答案 0 :(得分:3)

我不确定你要完成什么,但该代码不起作用。 setTimeout()不会暂停调用它的函数,回调中的return语句也不会影响它。

答案 1 :(得分:0)

JavaScript是asynchronous,不是同步的 - setTimeout不会“阻止”下一行代码的执行。 (参见相关的What is the difference between synchronous and asynchronous programming (in node.js)

要在延迟后提交表单(出于何种目的不清楚),您首先需要停止表单提交(通过取消事件),然后在执行setTimeout回调时再次提交表单。< / p>

$('form').on('submit', function(event) {

  // Prevent the form from submitting
  event.preventDefault();

  // 'this' is referring to the event target
  var form = this;

  // It may not be required to wrap the `form.submit` method but it's usually safer to do so
  setTimeout(function() {
    form.submit()
  }, 4000);

});

以下是http://jsfiddle.net/xppNp/1/

的示例