Javascript 为什么取消输入提交而不是使用输入类型=';按钮';

Javascript 为什么取消输入提交而不是使用输入类型=';按钮';,javascript,html,asp.net,Javascript,Html,Asp.net,在工作中,我正在浏览一个内部应用程序的一些源代码,我注意到一些我认为很奇怪的东西 下面是讨论中的html代码 <input type='submit' onclick='return doSomething()' value='Stuff Here'> 所以我的问题是。这与输入type='button'并简单地调用函数而不强制返回值false有什么不同?我知道这样做会取消表单提交,但如果你不想让它提交表单,为什么要首先将其作为一种提交类型?有很多人会这样做,但我突然想到的是,它正在

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

下面是讨论中的html代码

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

所以我的问题是。这与输入type='button'并简单地调用函数而不强制返回值false有什么不同?我知道这样做会取消表单提交,但如果你不想让它提交表单,为什么要首先将其作为一种提交类型?

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

此外,if()语句中可以使用true和false。这意味着,尽管它们是“真”和“假”,但有人可以这样使用它们:

    if (var1 = false) {
    var2 = true;
    }
甚至:

    if(var1 = false) {
    functionThatHappensWhenvar1EqualsTrue();
    }
所以,“真”和“假”只是价值观。“假”可能意味着真,“真”可能意味着假


您显示的代码不是取消输入提交,而是返回一个值。输入完成后打开了.pdf文档。

首先,由于表单上可以有多个提交按钮,如果在提交表单之前需要运行javascript,请在表单“onsubmit”事件中执行,而不是在提交按钮的“onclick”事件中执行

如果您不希望表单提交,则不需要使用提交按钮

您仍然需要防止表单本身被“隐式”提交

例如:

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

</form>

在文本字段中按enter键将激活submit按钮,您可以告诉它执行一项功能

但是,如果您有类似的内容(请注意,submit按钮被省略):


甚至

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

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



我认为可能有两个原因。。1屏幕阅读器、索引器对按钮的功能有更好的提示。也不确定,但我相信类型submit会成为默认按钮。当你按enter键时..可能是记错了,但据我回忆,这里有一些非常有趣的区别,比如当你按enter键时,
不会采取默认操作,但
会吗?我想这是一个写代码的人的问题,也许你可以问为什么内联javascript仍然被使用?可能是渐进式增强的重复:如果脚本出现任何问题,表单仍然提交。你可以猜测原因,但最好问问开发者是谁做的。我不相信你的解释完全准确,也不适用于我的问题。我的理解是,当您有一个输入类型='submit',并且它从通过onclick调用的函数中得到一个返回值false时,表单就不会被提交。如果这是错误的,那么我提前道歉。type=”“定义了输入的类型。当用户提交他们的输入时,它运行一个函数。在该函数中,“false”返回到控制台。
<form>
    <input type="text" name="name">
</form>
<form>
    <input type="text" name="name">
    <input type="button" value="Submit">
</form>
<form onsubmit="return false;">
    <input type="text" name="name">
    <input type="button" value="Submit">
</form>