2016-04-08 44 views
1

我想要的內容:
當表單提交時顯示「訂單處理」元素。在iOS表單提交中未顯示的元素

我所做的:

$("#register").validate({ 
    errorPlacement: function(error, element) { }, 
    submitHandler: function(form) { 
    $('.processing-wrapper').removeClass('hidden'); 
    form.submit(); 
    } 
}); 

什麼我遇到:

我已經試過:

  • 我註釋掉form.submit();只是爲了查看「訂單處理」元素是否會在iOS上顯示出來,並且確實如此。但是當表單提交時,我從來沒有看到處理元素。
  • 我試着添加setTimeout來延遲表單提交,看看是否會有更多的時間讓「Order Processing」元素在iOS上顯示,但無法真正提交表單。

更新了超時

$("#register").validate({ 
    errorPlacement: function(error, element) { }, 
    submitHandler: function(form) { 
    $('.processing-wrapper').removeClass('hidden'); 
    setTimeout(function(form) { 
     form.submit(); 
    }, 2500); 
    } 
}); 

有了這個更新我確實看到了「訂單處理」元素,但也得到了錯誤「類型錯誤:無法讀取屬性未定義‘提交’」

回顧:

  • 任何想法,爲什麼它TH e「訂單處理」元素不會在iOS上顯示?
  • 關於讓setTimeout實際工作的任何建議?

任何幫助指出我在正確的方向將不勝感激!

回答

1

超時的方法是正確的修復,因爲你已經設置的匿名函數接受一個form參數然而這是你得到的錯誤壓倒一切的外部範圍的form和爲空,因此,錯誤。只是刪除該參數,它應該很好地工作:

$("#register").validate({ 
    errorPlacement: function(error, element) { }, 
    submitHandler: function(form) { 
     $('.processing-wrapper').removeClass('hidden'); 
     setTimeout(function() { // no parameter here 
      form.submit(); 
     }, 50); 
    } 
}); 

注意:計時器延遲可以短得多,我在例如,它減少到50毫秒。所有你需要做的是確保在提交之前創建移除類的調用,以便UI有機會更新。

+0

這非常有幫助,謝謝!要澄清的是,iOS無法刪除類並同時提交表單?發生提交後iOS會凍結UI嗎? – michaelespinosa

+1

這不是因爲UI凍結,而是在執行加載新頁面的請求時停止響應對當前頁面的任何調用。 –