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

时间:2016-11-02 16:12:14

标签: javascript html asp.net

我正在工作的内部应用程序上查看一些源代码,我发现了一些我认为很奇怪的东西。

以下是相关的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的情况下调用函数?我知道它的完成方式取消了表单提交,但如果您从未希望它提交表单,为什么要首先将其作为提交类型?

2 个答案:

答案 0 :(得分:-1)

有很多人会做这样的事情,但突然出现的是它正在打开另一页。 “回归虚假”;可能是说用户不再在该标签中。

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

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

甚至:

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

所以,“真实”和“假”只是价值观。 “虚假”可能意味着真实,“真实”可能意味着虚假。

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

答案 1 :(得分:-1)

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

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

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

例如:

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

</form>

在文本字段中按Enter键将激活提交按钮,您可以告诉它执行某个功能。

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

<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>