无法使用JQuery更新内部HTML,它会立即返回[重复项]

问题描述 投票:0回答:2

我一直在尝试使此非常简单的功能起作用,用户单击提交按钮并更新问题编号。

在浏览器上,当我单击按钮时,问题编号持续一秒钟变成“ 2”,然后立即变回“ 1”。没有控制台警告或错误。

我也在JSFiddle上尝试过,当按下按钮时,它给了我一个404错误代码。

这是我尝试运行的非常小的脚本和HTML,以及JSFiddle

$(document).ready(() => {
  var level = 1;
  $('button').click(() => {
    level++;
    $("#question").text("Question " + level);
  });
});

  <h1 id="question">Question 1</h1>
  <form>
    <h3>What is your name?</h3>
    <textarea type="text" name="answer" rows="3" cols="50"></textarea>
    <br>
    <button class="btn btn-outline-primary btn-lg" type="submit" name="submit">Submit</button>
  </form>

javascript html jquery
2个回答
-2
投票

按钮的默认类型是提交,即使您尚未编写但也已指定它。

那么您的代码会怎样:

您的函数将执行,我们将看到结果,并将其作为type ='submit'行为重新加载。

使它成为type ='button'不会删除type属性。

我可以看到的另一件事是,您不需要调用$(document).ready(),因为它不是HTML加载时所需的函数。


-1
投票

因为提交表单时页面正在重新加载。

<form>的默认提交动作是当前URL,除非另外指定。除非另外指定,否则<button><form>的默认类型为submit。尽管在这种情况下,您明确指定了type="submit"。因此,从本质上讲,您的标记明确表示您要在单击按钮时重新加载页面。

由于您不打算发布表单,因此可以简化HTML并删除<form>元素并使按钮不再是submit按钮:

<h1 id="question">Question 1</h1>
<h3>What is your name?</h3>
<textarea type="text" name="answer" rows="3" cols="50"></textarea>
<br>
<button class="btn btn-outline-primary btn-lg" name="submit">Submit</button>

[如果出于某些其他原因,您希望/需要保留<form>(也许是样式?尽管由于从语义上讲不是“表单”,所以我建议您使用其他内容,例如<div>),那么您至少可以指定type="button"以防止默认的提交行为:

<button class="btn btn-outline-primary btn-lg" type="button" name="submit">Submit</button>
© www.soinside.com 2019 - 2024. All rights reserved.