为什么取消输入提交而不是使用input type='button'

Why cancel an input submit instead of using input type='button'

本文关键字:input type button 输入 取消 提交 为什么      更新时间:2023-09-26

我在工作中查看一个内部应用程序的源代码,我注意到一些我认为很奇怪的东西。

下面是有问题的html代码。

<input type='submit' onclick='return doSomething()' value='Stuff Here'>

这是JS函数

function doSomething() {
      //open a window with an aspx page that pulls down a pdf
      //always returns false
      return false;
}

我的问题是。这与使输入type='button'和简单地调用函数而不强制返回值为false有什么不同?我理解这样做会取消表单提交,但如果你不想让它提交表单,为什么要把它设为提交类型呢?

有人这样做有很多原因,但我突然想到的是,这是在打开另一个页面。"return false;"可能表示用户已不在该选项卡中。

也可以在if()语句中使用true和false。这意味着,尽管它们是"真"answers"假",但有人可以这样使用它们:

    if (var1 = false) {
    var2 = true;
    }

甚至:

    if(var1 = false) {
    functionThatHappensWhenvar1EqualsTrue();
    }

所以,"true"answers"false"只是值。"假"可以表示真,"真"也可以表示假。

您所展示的代码并没有取消输入提交,而是返回一个值。输入通过并打开。pdf文档。

首先,因为你可以在一个表单上有多个提交按钮,如果你需要在提交表单之前运行javascript,在表单的"onsubmit"事件中执行,而不是在提交按钮的"onclick"事件中执行

如果您不希望表单提交,那么就不需要使用提交按钮。

你仍然需要防止表单本身被"隐式"提交

例如:

<form>
    <input type="text" name="name">
    <input type="submit" value="Submit">
</form>

在文本框中按回车键将激活提交按钮,你可以告诉它执行一个函数。

但是,如果您有这样的内容(注意省略了提交按钮):

<form>
    <input type="text" name="name">
</form>

或者

<form>
    <input type="text" name="name">
    <input type="button" value="Submit">
</form>

然后在文本字段有焦点时按enter键将提交表单。为了防止这种情况,您需要这样做(还没有真正测试过代码)

<form onsubmit="return false;">
    <input type="text" name="name">
    <input type="button" value="Submit">
</form>