【发布时间】:2013-01-03 23:34:58
【问题描述】:
好的,我已将提交事件处理程序绑定到表单。处理程序设置为验证数据,然后在验证通过后禁用进一步的表单提交,并显示“请等待...处理”消息。
这是基本结构:
function handler() {
// Validation stuff goes here.
...
// Validation passes, show message and return true.
$('#processing-msg').show(); // Show the 'processing' message.
$form.bind('submit', function() { return false }); // Disable further form submits.
return true; // Proceed with form submittal.
}
直到最后一个return 语句,如果我在return true 之前中断,将显示处理消息。但是,如果我允许它发送到return true,则该消息永远不会出现。提交按钮也不会显示为禁用(过程的另一部分)。这适用于除 Safari 之外的几乎所有浏览器。我试过注释掉提交禁用逻辑,但没有骰子。
更新
我无法在 jsfiddle 上完全重新创建问题。但是在这里您可以看到 Safari 中调用函数的顺序有何不同(alerts() 发生在消息显示之前):http://jsfiddle.net/skttw/3/
【问题讨论】:
-
您的 Safari 版本是多少? docs.jquery.com/Browser_Compatibility
-
你可以为你的代码添加一个 jsfiddle 测试吗?我不确定你在做什么,但我在 chrome(与 safari 相同的 webkit)/firefox 之前遇到了一些类似的问题
-
一定是其他冲突,小提琴按原样工作:jsfiddle.net/skttw/2
-
如果这有帮助,如果我将
$.show()电话夹在警报之间,警报就会发生,但节目不会。只有当我返回 false... 挠头 -
我们开始了,事情的完成顺序有些奇怪:jsfiddle.net/skttw/3 请注意,“隐藏”直到第二次警报之后才会出现。
标签: javascript jquery safari forms