在返回页面时禁用的jQuery UI按钮仍然处于禁用状态

时间:2010-12-09 20:00:15

标签: jquery jquery-ui form-submit double-submit-prevention

我在表单上点击一个JQuery UI提交按钮,既可以防止双击,又可以清楚地表明它实际上已被点击了。

所以我使用jQuery来做到这一点:

$('input:submit').click(function() {
    $(this).button('disable');
});

可行,但问题是当用户点击其后退按钮时 仍然被禁用 。单击时禁用提交按钮的正确方法是什么?我显然使用jQuery,所以首选使用jQuery。

更新 :很多人建议我使用$(document).ready(function() {$('input:submit').button('enable');});来克服按钮的持续禁用。事实证明,如果它出现在$(function() {}中的按钮初始化调用之前,则无效。但是,如果我在按钮初始化代码之后放置该按钮('enable'),即使在$(function() {})部分,它也会按预期工作。

但现在我意识到整个按钮禁用仅适用于Firefox! 如果我停用该按钮,表单将不会在IE和Chrome中提交 (尚未测试其他人)!

更新2 :我终于让这个工作了,虽然有点担心一些浏览器无法用这些变通方法提交东西...这是我的最终的代码,很想听听潜在问题的意见:

$(function() {
    $('input:submit').button().click(function() {
        $(this).button('disable');
        $(this).closest('form').submit();
        return false;
    });
    $('input:submit').button('enable');
});

5 个答案:

答案 0 :(得分:2)

$(document).ready(function(){
 $("input:submit").attr("disabled", "");
})

答案 1 :(得分:0)

将此添加到页面。

$(document).ready(function() {
  $('input:submit').button({ disabled: false});
});

答案 2 :(得分:0)

嗯,它一直处于禁用状态,因为浏览器最好保存历史记录中的表单状态。所以我建议附加到load事件并删除disabled属性。

答案 3 :(得分:0)

我无法在jQuery API文档中找到对button方法的任何引用。你在使用某种模块吗?

回击应该将表单重置为它的初始状态,所以我想必须使用button方法进行一些会话魔术。请尝试以下方法:

$('input:submit').click(function() {
    $(this).attr('disabled', 'disabled');
});

答案 4 :(得分:0)

正如其他人所提到的,当您单击后退按钮时,表单会保留(部分)其状态,因此您需要在加载页面时启用提交按钮(当有人单击后退按钮时也会发生这种情况)。

将此添加到您的页面:

$(document).ready(function(){
  $("input:submit").button("enable");
});

请注意,此解决方案使用jQuery UI button.enable()方法,该方法与您使用的button.disable()方法相反。