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,使按鈕消失,但然後表單不再提交。
遺憾的是,沒有工作。它與hide()大致相同。「匹配的元素將立即隱藏,沒有動畫。這大致相當於調用.css(」display「,」none「),除了display屬性的值是保存在jQuery的數據緩存中「 - > http://api.jquery.com/hide/ –
嘗試.detach()然後,從DOM中臨時移除元素。 –
Thx獨自思考 - 但從我分離()(同刪除)提交按鈕的那一刻起,表單不再提交。我要編輯我原來的問題來添加這條信息。 –