javascript
2013-07-18 51 views 0 likes 
0
   $('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为此请帮助settimeout无法正常工作我不知道为什么

+1

你为什么不先加载图像,之后从JS提交表单? :? –

+0

是否使用AJAX提交表单?如果不是,它似乎不会显示图像。 –

+0

它不是AJAX形式 – user2595051

回答

3

我不太确定你所要完成的是什么,但该代码将无法正常工作。 setTimeout()不会暂停其被调用的函数,回调中的return语句也不会影响它。

+0

是我可以使用的任何替代代码吗?我怎么能加载一个gif图像,因为它执行返回语句?请帮助。 – user2595051

+0

因此,您要确保在提交表单之前显示加载器图像?我想最简单的方法是将图像预先加载到DOM中。然后,您只需将其设置为可见,即刻即可。你也避免让你的用户在他的请求被处理之前等待4秒钟,我认为这不是一个好主意。 –

0

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

要延迟一段时间后提交表单(出于什么目的尚不清楚),你首先需要停止的形式提交(通过取消该事件),然后再次提交表单时执行setTimeout回调为。

$('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/

+0

谢谢你们的帮助:) – user2595051

+0

我为任何希望在行动中看到我的解释的人添加了一个例子。 –

相关问题