【问题标题】:Any attributes to ensure an HTML form can't be submitted?有什么属性可以确保不能提交 HTML 表单?
【发布时间】:2019-02-23 14:04:43
【问题描述】:

我想以一种 不可提交 直到它被我的 JavaScript 异步增强的方式对 HTML 表单进行服务器渲染。

form 元素 (MDN) 似乎没有 disabled 属性。

我可以将disabled 属性添加到提交按钮(然后在准备好后使用JavaScript 将其删除),但用户仍然可以通过聚焦任何输入并按下Enter 来提交表单。

有没有什么方法可以防止在没有 JavaScript 的情况下提交(除了将表单完全隐藏在服务器呈现的 HTML 中,然后用 JS 取消隐藏)?

【问题讨论】:

  • 没有JS?不。您能做的最好的事情就是将表单操作留空,并仅在准备好时应用它。
  • @Utkanos 一个空的action 会导致表单被提交到相同的 URL...
  • 阻止form 元素上的默认提交事件,并在其中设置AJAX 逻辑。
  • 您可以在页面外隐藏的字段上使用必需属性,然后在您的 js 运行时删除该字段
  • @deceze;正确 - javascript:void(0)# 会这样做。

标签: javascript html server-rendering


【解决方案1】:

抱歉,回答我自己的问题 - 事实证明,只需禁用提交按钮,就很容易使表单无法提交(至少在 Chrome 69 中)。

当唯一的提交按钮被禁用时,即使聚焦文本字段并按下Enter 也不会提交表单。

【讨论】:

    【解决方案2】:

    你可以这样做

    onsubmit="return false" 
    

    form 标签上:

    <form onsubmit="return false">
      <label>input
        <input type="text" name="input" name="a" />
      </label>
      <input type="submit" value="submit" />
    </form>

    【讨论】:

    • 这不会阻止禁用 JavaScript 的用户提交表单。
    【解决方案3】:

    对提交按钮使用type="button" 属性,然后将其更改为type="submit"

    【讨论】:

    • 这不会阻止字段中的按下返回
    • 即使在文本字段中按 ENTER,这也会阻止表单提交,直到您通过脚本提交表单
    • 不,它没有,在文本框中输入一些内容并按 Enter - 表单提交:jsfiddle.net/b0prc8uy
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 2011-03-24
    • 2023-03-18
    • 1970-01-01
    • 2018-04-07
    • 2017-01-02
    • 1970-01-01
    相关资源
    最近更新 更多