【问题标题】:Enabling a disabled form button after submit & browser back button提交和浏览器后退按钮后启用禁用的表单按钮
【发布时间】:2016-10-15 11:51:40
【问题描述】:

提交按钮在表单提交期间使用“button.prop”禁用。如果用户使用浏览器返回按钮导航回表单,则提交按钮保持禁用状态。

如何重新启用它?

<script type="text/javascript">
$('#submit-form').validate();
$('#submit-form').on('submit', function (e) { 
    var button = $('#submit-btn'); 
    var c37=$('#c37').val(); 
    var c42=$('#c42').val(); 
    var c48=$('#c48').val(); 
    var c53=$('#c53').val(); 
    var c1=$('#c1').val(); 
    var c2=$('#c2').val(); 
    if(c37=="" || c42=="" || c42=="" || c48=="" || c53=="" || c1=="" ||c2==""){
            button.prop("disabled", false);
    } else {
            button.prop('disabled', true); 
    }
});
</script>

【问题讨论】:

  • 如果所有字段都包含某个值,那么您的按钮会被禁用。您可以在代码的末尾添加 button.prop('disabled', false) 独立地,其结果始终可用。 建议:在 if 句中使用=== 而不是==
  • 试试这个 -> $(window).on('popstate', function(event) { button.prop("disabled", false); });
  • 嗯,不幸的是似乎不起作用。

标签: jquery forms submit form-submit


【解决方案1】:

“如果所有字段都包含一些值,那么您的按钮将被禁用”这是真的 - 切换它们。

<script type="text/javascript">
    $('#submit-form').validate();
    $('#submit-form').on('submit', function (e) { 
        var button = $('#submit-btn'); 
        var c37=$('#c37').val(); 
        var c42=$('#c42').val(); 
        var c48=$('#c48').val(); 
        var c53=$('#c53').val(); 
        var c1=$('#c1').val(); 
        var c2=$('#c2').val(); 
        if(c37=="" || c42=="" || c42=="" || c48=="" || c53=="" || c1=="" ||c2==""){
      button.prop('disabled', true);   // switched places          

        } else {
      button.prop("disabled", false); 
        }
    });
    </script>

【讨论】:

  • “所有字段都包含某个值”时需要禁用该按钮。
【解决方案2】:

这似乎是特定于浏览器的问题——在经过测试的那些浏览器中,以下浏览器自动重新启用了提交按钮:

  • Microsoft Edge 20
  • 谷歌浏览器 53
  • 歌剧 40
  • 移动谷歌浏览器 (iOS) 45

将以下代码添加到表单底部,在关闭之前 'body' 标签——至少解决了这些经过测试的浏览器的问题:

Mozilla Firefox 44

window.onunload = function(){};
$(document).ready(function(){
$('#submit-btn').prop('disabled', false);
});

Safari 9.1.3

移动版 Safari (iOS 8.3)

移动版 Firefox 5.3

Internet Explorer 11

window.onpageshow = function(event) {
if (event.persisted) {
window.location.reload() 
}
};

【讨论】:

  • 确实是浏览器特有的问题。但 Firefox 修复似乎不起作用(60.0 版)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 2023-03-07
  • 1970-01-01
  • 2010-10-31
  • 2014-04-17
相关资源
最近更新 更多