我的表单中只有一个textarea
。我想提交它,但只按 Enter 。在textarea
按 Enter 时的默认事件将转到新行,我想更改它。
function textSubmit() {
$("textarea").on("keypress", function(e) {
if (e.keyCode == 13) {
e.preventDefault();
$(this).parents('form').submit();
}
else if (e.altKey && e.keyCode == 13) {
//else if (e.keyCode == 18 && e.keyCode == 13) {
e.preventDefault();
$(this).val($(this).val() + "\n");
}
});
}
如何在按 Enter 而不是转到新行时提交表单?
答案 0 :(得分:2)
使用keydown
代替keypress
作为keypress
仅在生成可打印字符时触发:
$("textarea").on("keydown", function(e) {
if(e.altKey && e.keyCode === 13) {
e.preventDefault();
e.stopPropagation();
$(this).val($(this).val() + "\n");
} else if(e.keyCode === 13) {
e.preventDefault();
e.stopPropagation();
$(this).parents('form').submit();
}
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="#" method="post">
<textarea></textarea>
</form>
&#13;
答案 1 :(得分:0)
试试这个,它应该处理alt键:
function textSubmit() {
$(".textarea").on("keydown", function(e) {
if (e.keyCode === 13) {
e.preventDefault();
if (e.altKey === true) {
$(this).val($(this).val() + "\n").focus();
} else {
$(this).parents('form').submit();
}
}
});
}
textSubmit();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea class="textarea" placeholder="Text"></textarea>
&#13;
答案 2 :(得分:0)
你做错了是你没有调用你的函数。通过执行textSubmit()
来调用你的函数或者将你函数中的代码块移到全局环境中。并且@Scott说使用'keyDown'而不是'keyPress'作为'keypress'只会传递按键产生的字符,只有在有按键时才会调用。
function textSubmit() {
$("textarea").on("keydown",function(e) {
if (e.altKey && e.keyCode === 13) {
e.preventDefault();
$(this).val($(this).val() + "\n");
}
else if (e.keyCode === 13) {
e.preventDefault();
$(this).parents('form').submit();
}
});
}
textSubmit();
这里我刚刚调用了该函数,它工作正常。