我一直在尝试使此非常简单的功能起作用,用户单击提交按钮并更新问题编号。
在浏览器上,当我单击按钮时,问题编号持续一秒钟变成“ 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>
按钮的默认类型是提交,即使您尚未编写但也已指定它。
那么您的代码会怎样:
您的函数将执行,我们将看到结果,并将其作为type ='submit'行为重新加载。
使它成为type ='button'不会删除type属性。
我可以看到的另一件事是,您不需要调用$(document).ready(),因为它不是HTML加载时所需的函数。
因为提交表单时页面正在重新加载。
<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>