使用jQuery和Coldfusion服务器代码启用/禁用提交按钮

我试图在我的代码中使用jQuery启用/禁用提交按钮。 现在,一切正常,直到我提交表单,它通过服务器端validation并失败,这将我发送到带有后退按钮的错误页面,当我点击后退按钮时,我回到了表单页面并且按钮仍然被禁用。 有什么想法吗?

码:

  if(typeof window.submitForm == "undefined") { window.submitForm = "true"; } $(function() { $("input:submit").button().click(function() { var submitCheck = window.submitForm; $(this).button("disable").val("Processing..."); if(submitCheck==="true") { $(this).closest("form").submit(); } else { $("input:submit").button("enable").val("Submit"); return false; } }); }); $(window).unload(function() { setTimeout(function() { $("input:submit").button("enable").val("#ATTRIBUTES.enabledText#"); }, 300); });  

以下是正在发生的事情:当我单击提交按钮时,文本将变为“正在处理…”并且该按钮将被禁用。 服务器代码工作,返回错误,然后单击后退按钮(浏览器栏或JavaScript:history.back()按钮)。 当我返回到表单页面时,文本已更改回“提交”,但该按钮仍处于禁用状态。 我该如何解决?

当后退按钮被击中时,浏览器是否没有完全重新加载? 我错过了别的什么吗?

此外,假设服务器端错误无法更改,我不能简单地回发到表单本身(即错误页面将显示)。 我还测试了window.submitForm变量,然后返回true。

我自己会对JS使用一种略有不同的方法..尝试以下几点:

 
... ...

正如您所看到的那样,它会更紧凑,并在重新加载页面时强制重置

我很确定这是一个已知的FireFox问题,你可以确保在所有浏览器中保持一致体验的唯一方法是不禁用按钮并只使用JS来确保它们不做双重post。 这是我的解决方案,我改变了你的一些布局,使它更抽象。