【发布时间】:2019-05-26 15:16:57
【问题描述】:
好的,在问这个问题之前,我确定在 stackoverflow 上已经有答案了……但我找不到任何东西,所以这里是:
当我点击回车时,它应该提交表单以向数据库添加评论。
这是我的代码:
(这是表格)
<form method="POST">
{{ form.hidden_tag() }}
{% if form.comment.errors %}
{{ form.comment(id="comment-input", class="new-comment", placeholder="Add a new comment", autofocus="autofocus") }}
<div class="invalid-feedback" style="display: block;">
{% for error in form.comment.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.comment(id="comment-input", class="new-comment", placeholder="Add a new comment", autofocus="autofocus") }}
{% endif %}
{{ form.submit(class="btn btn-outline-info", id="submit", style="display:none;") }}
</form>
当按下回车键时,我正在使用这个 javascript 提交表单:
var input = document.getElementById("comment-input");
input.addEventListener("keyup", function(event) {
// Cancel the default action, if needed
event.preventDefault();
// Number 13 is the "Enter" key on the keyboard
if (event.keyCode === 13) {
// Trigger the button element with a click
document.getElementById("submit").click()
}
});
问题是,通常如果我在输入评论后按 Enter 键,它可以正常工作,但如果我在输入评论后按住 Enter 键,它会提交多个 cmets。
但是,如果您查看我的代码,它会显示 keyUp 而不是 keyDown!我很确定当你按住一个键时,它仍然只有keyUp 一次。
我已经通过stackoverflow等查看了大约2个小时,希望这个问题对我的情况有所帮助。
【问题讨论】:
-
@Herohtar 抱歉,这只是一个错字,我在我的代码中将其命名为
keyup -
在这种情况下,您没有采取任何措施来阻止表单的默认
submit事件。如果您在作为表单一部分的输入字段中按 Enter,则默认操作是提交表单。 -
哦,好吧。所以我应该完全删除该功能?
-
event.preventDefault()应该可以解决问题@Herohtar -
@ShahinSorkh 已经存在了,对吧?
标签: javascript html events flask addeventlistener