好的,我已将提交事件处理程序绑定到表单。处理程序设置为验证数据,然后在验证通过后禁用进一步的表单提交,并显示“请等待...处理”消息。
这是基本结构:
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
语句,如果我 break before return true
,将显示处理消息。但是,如果我允许它,return true
则消息根本不会出现。提交按钮也不会显示为禁用(过程的另一部分)。这适用于除 Safari 之外的几乎所有浏览器。我试过注释掉提交禁用逻辑,但没有骰子。
更新
我无法在 jsfiddle 上完全重新创建问题。但在这里您可以看到 Safari 中调用的函数顺序有何不同(alerts()
在显示消息之前发生):http: //jsfiddle.net/skttw/3/