【问题标题】:What is the meaning of onsubmit="return false"? (JavaScript, jQuery)onsubmit="return false" 是什么意思? (JavaScript, jQuery)
【发布时间】:2016-01-27 12:12:42
【问题描述】:

我知道提交表单时会发生 onsubmit 事件。

通常,我们在 onsubmit 事件上调用一个方法,例如<form action="" onsubmit="myfunction()">

今天我看到了这个,"<form action="" onsubmit="return false">"。它是如何工作的?我不明白onsubmit="return false"是什么意思。

PS:我在学习 Ajax 时发现了这一点。这是一个教程,它解释了如何在不刷新页面的情况下将数据提交到数据库。

【问题讨论】:

  • return false 取消默认提交动作(停止提交表单)。
  • 表示Do nothing。返回控制流..
  • 表示提交时什么都不做。
  • 如果我们没有通过 onsubmit 事件调用函数,那么它将按预期工作,即提交表单跨度>
  • 这通常用于取消不符合条件的表单提交。例如在表单字段中执行验证之后。如果表单无效,您可能想取消提交

标签: javascript jquery forms


【解决方案1】:

这基本上是为了处理通过 JavaScript 提交的表单。

例如 - 用于验证目的

查看下面的代码,看看它有什么好处:

<script language="JavaScript">
myFunctionName() {
    if (document.myForm.myText.value == '')
        return false;
        // When it returns false - your form will not submit and will not redirect too
    else
        return true;
     // When it returns true - your form will submit and will redirect
// (actually it's a part of submit) id you have mentioned in action
}
</script>

<form name="myForm" onSubmit="return myFunctionName()">
<input type="text" name="myText">
<input type="submit" value="Click Me">
</form>

【讨论】:

  • 请你解释一下如果返回 true 会发生什么?如果返回 false 会发生什么?
  • @Sasa1234 我已经编辑了上面的代码,并在评论中进行了解释。 “当它return false - 你的表单将不会提交,也不会重定向,如果它return true - 你的表单将提交并重定向(实际上它是提交的一部分)你在行动中提到的id”
  • 如果动作实际上是由JavaScript事件监听器执行的,主要用于阻止表单将表单数据附加到url。
  • @AmarSingh 要测试空字段,正确的是 ...value === ??
  • 有关此功能的任何文档?除了这个 W3C 推荐,我没有找到任何官方文档:w3.org/TR/html52/sec-forms.html
【解决方案2】:

如果您使用按钮而不是提交,如下所示:

 <form name="myForm" onSubmit="myFunctionName(); return false">
    <input type="text" name="myText">
    <input type="button" value="Click Me" onclick="myFunctionName()">
 </from>

【讨论】:

  • 为什么需要在第一行硬编码 return false ?
  • 我认为只有在 JS 完成加载之前有人点击它,所以页面不会重新加载
【解决方案3】:

这有效地防止表单以任何方式提交 脚本控制下的情况除外(通过 form.submit(),其中 不会触发提交事件)

参考:Query in Action 第三版(影响事件传播和语义动作,第 143 页)

【讨论】:

    【解决方案4】:

    根据HTML standardonsubmit is the name of an event handler。事件处理程序内容属性是treated as a script。该脚本将用于处理相关事件。在step 5 of "The event handler processing algorithm", it says "Process return value as follows":

    • 如果事件是 BeforeUnloadEvent 对象并且事件的类型是 beforeunload
      • 在这种情况下,事件处理程序 IDL 属性的类型将是 OnBeforeUnloadEventHandler,因此返回值将被强制 转换为 null 或 DOMString。
      • 如果返回值不为空,则:
        • 设置事件的取消标志。
        • 如果事件的returnValue属性值为空字符串,则设置事件的returnValue属性值为return 价值。
    • 如果特殊错误事件处理为真
      • 如果返回值为真,则设置事件的取消标志。
    • 否则

    所以,简而言之,return false 将取消事件(或者在这种情况下,取消表单提交)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 2022-01-09
      • 2011-08-22
      • 2014-12-31
      • 2022-11-15
      • 2014-11-05
      • 2018-03-03
      相关资源
      最近更新 更多