单击窗体中的按钮时阻止刷新页面

bun*_*ath 131 html javascript

我在使用表单内的按钮时遇到问题.我想要那个按钮来调用功能.它确实如此,但是有了不必要的结果,它刷新了页面.

我的简单代码是这样的

<form method="POST">
    <button name="data" onclick="getData()">Click</button>
</form>
Run Code Online (Sandbox Code Playgroud)

单击该按钮时,将在页面刷新时调用该函数,该页面将重置我以前的所有请求,该请求会影响当前页面,这是前一个请求的结果.

我该怎么做才能阻止页面刷新?

det*_*ale 301

在按钮上添加type ="button".

<button name="data" type="button" onclick="getData()">Click</button>
Run Code Online (Sandbox Code Playgroud)

按钮的"type"的默认值是"submit",它会自动在您的情况下发布表单并使其看起来像刷新.

  • 这里给出了完美的答案 (10认同)
  • 除了这会阻止 HTML5 表单验证(例如对于 type="email" 的输入)。 (3认同)
  • 这是最好的选择。虽然“返回假”可能会内联工作,但我知道在添加事件侦听器时没有这样的选项。指定 type="button" 确实可以节省一天的时间。 (3认同)
  • 您还可以在onclick上添加“ return false;”:`onclick =“ getData(); return false;”` (2认同)

JND*_*PNT 58

让我们getData()返回false.这将解决它.

<form method="POST">
    <button name="data" type="button" onclick="getData()">Click</button>
</form>
Run Code Online (Sandbox Code Playgroud)

  • 我应该更改onclick ="return addData()"以使其正常工作 (5认同)
  • `type="button"` 确实是一个亮点。 (4认同)
  • 你不需要改变函数 - 你可以使用onclick ="getData(); return false;" (3认同)
  • 的确。`onclick` 函数必须返回 false,而不是 `getData`。 (2认同)

Jam*_*ice 14

问题是它触发了表单提交.如果您创建该getData函数,return false则应该停止提交表单.

或者,您也可以使用preventDefault事件对象的方法:

function getData(e) {
    e.preventDefault();
}
Run Code Online (Sandbox Code Playgroud)


小智 13

您需要做的就是放置一个类型标签并制作类型按钮.

<button id="btnId" type="button">Hide/Show</button>
Run Code Online (Sandbox Code Playgroud)

这解决了这个问题

  • 你能详细解释一下原因吗? (2认同)

Meh*_*way 9

HTML

<form onsubmit="return false;" id="myForm">
</form>
Run Code Online (Sandbox Code Playgroud)

jQuery的

$('#myForm').submit(function() {
    doSomething();
});
Run Code Online (Sandbox Code Playgroud)