javascript
2013-07-18 53 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

我爲任何希望在行動中看到我的解釋的人添加了一個例子。 –

相關問題