当前,如果此人enter在文本区域内按下,则将提交表单。 很好,我想要那个。
enter
但是,当他们键入shift+时enter,我希望文本区域移至下一行:\n
shift
\n
我该如何JQuery尽可能简单地用普通JavaScript 做到这一点?
JQuery
我的解决方案
我想你可以做这样的事情。
编辑: 更改代码以工作,无论插入位置
代码的第一部分是获得插入符的位置。
function getCaret(el) { if (el.selectionStart) { return el.selectionStart; } else if (document.selection) { el.focus(); var r = document.selection.createRange(); if (r == null) { return 0; } var re = el.createTextRange(), rc = re.duplicate(); re.moveToBookmark(r.getBookmark()); rc.setEndPoint('EndToStart', re); return rc.text.length; } return 0; }
然后在Shift+ Enter在一起时相应地替换textarea值,如果Enter单独按下则提交表格。
Shift
Enter
$('textarea').keyup(function (event) { if (event.keyCode == 13) { var content = this.value; var caret = getCaret(this); if(event.shiftKey){ this.value = content.substring(0, caret - 1) + "\n" + content.substring(caret, content.length); event.stopPropagation(); } else { this.value = content.substring(0, caret - 1) + content.substring(caret, content.length); $('form').submit(); } } });