【问题标题】:disable submit button when javascript is disabled禁用 javascript 时禁用提交按钮
【发布时间】:2010-12-30 04:51:14
【问题描述】:

我有一个表单需要启用 javascript 进行验证,有没有办法在禁用 javascript 时禁用提交按钮并警告用户先启用它?

【问题讨论】:

  • 数据客户端的完整性检查只能为用户提供便利。它无法为您提供任何安全保障。恶意客户可以提交他们喜欢的任何数据。在服务器上执行检查。这样你就不用担心用户是否启用了 JS。
  • 这样做有商业原因吗?仅供参考(如果您是新手),所有由 JavaScript 完成的验证都可以轻松绕过 - 您应该始终在服务器上验证表单数据。
  • 原因是我有多个表单可以计算许多项目的价格,当禁用 javascript 验证将不起作用(我使用 jquery 插件进行验证),它不会起作用,当用户提交它时,表单将发送空字段
  • 不进行客户端验证不会导致表单提交数据失败。你要么是在描述错误,要么是误诊了问题。无论哪种方式,解决方案都是“让它在没有 JS 的情况下工作”而不是“尝试强迫人们使用 JS”。
  • 它类似于这个页面:psd2html.com/order-now.html 如果你禁用 javascript,表单将无法工作!

标签: javascript forms submit


【解决方案1】:

默认禁用它并使用 JavaScript 启用它。

<input type="submit" value="Submit" id="submitBtn" disabled />

<script type="text/javascript">
var _onload = window.onload || function()
{
  document.getElementById('submitBtn').disabled = false;
}

_onload();
</script>

这样,如果 JavaScript 被禁用,那么按钮也将保持禁用状态。

jQuery 版本:

<script type="text/javascript">
$(function(){
  $('#submitBtn').attr('disabled', false);
});
</script>

【讨论】:

  • 请注意_onload 函数,因为如果之前已设置window.onload 属性,您的函数将永远运行。实际上,由于 script 块是在输入之后定义的,因此您可以假设 getElementById 会找到它,因为在评估脚本时,输入已经在 DOM 中...
  • @CMS 对。这就是为什么我更喜欢 jQuery。
【解决方案2】:

默认禁用,如果有javascript,则启用它。

【讨论】:

    【解决方案3】:

    不要定义 HTML 表单操作,而是仅定义 onSubmit javascript 事件处理程序。如果未启用 javascript,onSubmit 将不会触发,但由于没有表单操作,提交按钮也不会执行任何操作。

    您还可以选择让 HTML 表单操作转到错误页面,说明必须启用 javascript,以便用户获得某种反馈。

    或者,您可以从禁用按钮开始(如其他海报所建议的那样)。如果您这样做,您还应该考虑表单上的一条消息,指示按钮为何被禁用。如果在您重新启用按钮的同时启用了该消息,请使用 javascript 删除该消息。

    【讨论】:

      【解决方案4】:

      因为根据环境以编程方式禁用按钮并提醒他都是取决于某种脚本语言(如 JavaScript)的任务,所以答案是否定的:-/

      【讨论】:

      • 你可以默认禁用它,然后用 JavaScript 启用它
      • 对!我没有想到这一点,但无论如何,我不是 javascript 依赖项的忠实粉丝......
      • 问题是不依赖于javascript吗?
      【解决方案5】:

      您获得了启用部分的解决方案。对于警报部分,您可以使用良好的旧标签。 (-:

      <noscript>
      <H1> It Wont work w/o javascript. Please Enable</h1>
      </noscript>
      

      【讨论】:

        【解决方案6】:

        对不起,回复晚了,但这让我开始思考如何解决这个问题,因为我有一个类似的问题,它把我带到了这里。您应该始终在没有 javascript 的情况下对您的网站进行编程并在之后添加它以增强它,但在我的情况下,使用灯箱之类的东西被用作输入,如果 javascript 被禁用,则无法正常工作(特别是因为我将值传递给它的父级)。

        我的建议是希望您启用了 PHP,因此您可以简单地将其放在文档的顶部

        <?php if (isset($_POST)) { 
            //redirect to page, or set a message variable saying "no results saved" 
            header('some_page');
            $message = "We've detected you do not have " .
                       "javascript enabled. No results saved";
        } ?>
        

        从那里,您必须将页面上的所有按钮设置为说

        <input name="button" id="button" type="submit" onclick="return false;" />
        

        或者你可以更简单地去

        <form name="my_form" id="my_form" method="post" action="" onclick="return false;" />
        

        希望这会有所帮助!

        【讨论】:

          猜你喜欢
          • 2019-03-19
          • 1970-01-01
          • 2016-04-03
          • 2012-12-25
          • 1970-01-01
          • 2015-08-22
          • 2010-09-11
          • 2023-03-16
          • 2011-03-12
          相关资源
          最近更新 更多