2014-01-10 57 views
2

對於Drupal站點,我開發了一個相當簡單的模塊來防止用戶多次按下提交按鈕。當提交按鈕被按下時,它會被一條小小的信息取代,以便有一定的耐心。Safari忽略onclick事件中的提交更改

這個問題在所有的瀏覽器中似乎都可以正常工作,但Safari除外。

$("input[id^='edit-submit']").click(function(e){ 
     var message = Drupal.t('Please wait...'); 
     $(this).hide(); 
     $('<span>' + message + '</span>').insertAfter(this); 
    }); 

當我看調試器時,看到一個屬性出現style =「display:none;」但Safari似乎無視它。當我手動(通過開發人員工具)添加一個顯示:無按鈕消失。

我不知道它jQuery doesn't run in Safari on form submit是相關的,因爲當我添加一個console.log()之間的點擊函數體它執行一次($(this)值也指向正確的元素),但它doesn' t迴應該按鈕上的任何更改。

看起來,從你點擊提交按鈕的那一刻起,它處於某種鎖定狀態 - 這也會阻止雙重提交 - 但我想確定這是safari的標準行爲,然後是一個bug未來困擾着我。

我試過Google搜索某些關鍵字,但是我找不到任何描述Safari瀏覽器行爲的文檔。

編輯:我也嘗試刪除(和分離)按鈕onclick,使按鈕消失,但然後表單不再提交。

回答

1

嘗試使用:

.css('display', 'none'); 
+0

遺憾的是,沒有工作。它與hide()大致相同。「匹配的元素將立即隱藏,沒有動畫。這大致相當於調用.css(」display「,」none「),除了display屬性的值是保存在jQuery的數據緩存中「 - > http://api.jquery.com/hide/ –

+0

嘗試.detach()然後,從DOM中臨時移除元素。 –

+0

Thx獨自思考 - 但從我分離()(同刪除)提交按鈕的那一刻起,表單不再提交。我要編輯我原來的問題來添加這條信息。 –