对于 Drupal 站点,我开发了一个相当简单的模块来防止用户多次按下提交按钮。当按下提交按钮时,它会被替换为一条小消息,以耐心等待。
这个问题在所有浏览器中似乎都可以正常工作,但 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) 值也指向正确的元素)但它不会响应该按钮上的任何更改。
似乎从您单击提交按钮的那一刻起,它就处于某种锁定状态 - 这也可以防止双重提交 - 但我想确定这是 safari 的标准行为,然后是一个可能困扰的错误 future 的我。
我尝试使用谷歌搜索某些关键字,但我找不到任何描述 Safari 中此行为的文档。
编辑:我还尝试删除(并分离)onclick 上的按钮,这会使按钮消失,但随后不再提交表单。
最佳答案
尝试使用:
.css('display', 'none');
关于javascript - Safari 忽略 onclick 事件中的提交更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21040110/