【问题标题】:Ignoring onSubmit when the submit button is clicked单击提交按钮时忽略 onSubmit
【发布时间】:2010-03-09 23:24:48
【问题描述】:

我有一个表单,其中我指定了onSubmit="validate()",但如果单击了提交按钮,我想忽略验证。是否有一种很好的跨浏览器方法来检测是否单击了提交按钮从而忽略了验证?

【问题讨论】:

  • 首先,永远不要做“onThis = that()”。以不显眼的方式进行。你到底想要什么?如果您想忽略验证,请将其从 onSubmit 中删除并仅在表单元素更改时验证!

标签: javascript html forms


【解决方案1】:

为什么不使用按钮而不是提交,并在单击按钮时设置它的操作?这样您就可以控制是否要验证、提交或其他任何您喜欢的内容。

【讨论】:

  • 按钮不会为非 JavaScript 用户降级。
  • 制作动态按钮?用它替换您的提交。
  • @geocar 当我们谈论:onSubmit="validate()" 时,我们真的需要考虑按钮不适用于非 js 用户吗?
  • input type=button cannot 为非 js 用户提交表单,而 input type=submit 可以。非 js 用户无论如何都会忽略 onsubmit="" 处理程序。这取决于提问者是否关心禁用或不存在 javascript 的人的可用性。
【解决方案2】:

仅当用户提交表单时才会触发提交事件;如果是通过JS提交的,则不会。

因此:

<input type="submit" onclick="this.form.submit(); return false;">

如果 JS 不可用,这就像一个普通的提交按钮......并且 onsubmit 仍然无法触发,因为它也需要 JS。

(像往常一样,为了清楚起见,优先使用 JS 而不是固有事件属性附加事件,而不是从本示例中排除)

【讨论】:

    【解决方案3】:

    您可以尝试使用带有 onClick 的 &lt;input type="button"... 来提交表单 - javascript .submit() 不会触发表单的 onSubmit 函数。

    【讨论】:

      【解决方案4】:

      你试过了吗?

      <input type="submit" onclick="void(window.validate=function(){return true;})" value="Submit" />
      

      【讨论】:

        【解决方案5】:

        只需从您的提交按钮处理程序返回 false 或 preventDefault

        【讨论】:

        • 这将停止表单提交,而不是忽略验证。
        • 哎呀,这是真的,误解了问题
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多