【发布时间】:2019-04-27 08:34:08
【问题描述】:
我遇到了一个问题,我正在做的是有一个<form>,它有一个<textarea>。我想要实现的是当用户按下Enter 键时
在textarea 上,然后提交表单。
默认表单附带eventListener submit 并执行回调函数。
但问题是我想在 Enter 键上执行该回调。
我知道我可以通过使用 JQuery .submit(callback) 方法来实现相同的行为。
但是有没有办法在 Vanilla javascript 中重新触发相同的回调函数。
const submitForm = (event) => {
event.preventDefault();
alert('form is submitted!');
};
// Form Event
document.getElementById('form').addEventListener('submit', submitForm, false);
// Key Event
document.getElementById('textarea').addEventListener('keypress', (event) => {
if (event.which === 13 || event.keyCode === 13) {
event.preventDefault();
// Form submit
}
}, false);
* {
box-sizing: border-box;
}
textarea {
width: 380px;
min-height: 210px;
padding: 18px;
font-size: 26px;
margin-bottom: 16px;
resize: vertical;
}
<form id="form" name="form">
<label>
<textarea id="textarea" name="message" placeholder="Type Here"></textarea>
</label>
</form>
【问题讨论】:
-
在textarea中的enter键表示换行,你可以覆盖默认行为,可以让shift + enter换行,这样就可以了enter 表单已提交。参考这个link
标签: javascript