当前,如果此人enter
在文本区域内按下,则将提交表单。
很好,我想要那个。
但是,当他们键入shift
+时enter
,我希望文本区域移至下一行:\n
我该如何JQuery
尽可能简单地用普通JavaScript 做到这一点?
我的解决方案
我想你可以做这样的事情。
编辑: 更改代码以工作,无论插入位置
代码的第一部分是获得插入符的位置。
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
单独按下则提交表格。
$('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();
}
}
});
在为Chromebooks和物理键盘准备Android应用程序时,我希望在编辑文本中区分从物理键盘接收“Enter”(键事件66)和“Shift+Enter”(显然也是键事件66)。我尝试了许多不同的解决方案,例如 活动中的DispatchKeyEvent(KeyEvent事件)。然而,Event.getModifiers()总是返回0,与Event.get转移()一样。KeyEvent.IsSh
JavaFX8控制器如何判断Shift、Ctrl、Alt或Enter键位于键盘的左边还是右边? 尝试使用JNativeHook(他们最近移动了),它几乎可以作为一个解决方案,但不能识别一些键,时间不精确,实现起来有点笨拙,尤其是因为我不能为所有平台编译本机代码。许可条款也有点混乱(稳定版本的GPL,在我的情况下不是一个选项,可能会转向LGPL...)。
问题内容: 我想在输入时立即在WebView中打印HTML文本区域的内容。 PS:出于某种原因,我尝试听的,但它不起作用。 问题答案: 如果尝试将JavaFX TextArea对象的内容打印到WebView中,则应将侦听器添加到TextArea而不是WebView。 如果尝试在WebView的HTML页面内的HTML TextArea标记中侦听事件,则应将侦听器添加到文档模型:
问题内容: 是否热衷于使快捷方式仅在“发件人”文本字段中起作用? 问题答案: 使用焦点和模糊侦听器删除和添加快捷键:
问题内容: 我想检测用户是否按下了jQuery。 这怎么可能?需要插件吗? 编辑:看来我需要使用该方法。 我想知道是否有人知道该命令是否存在浏览器问题-就像我应该知道的浏览器兼容性问题一样? 问题答案: jQuery的全部要点是,您不必担心浏览器的差异。我很确定您可以放心在所有浏览器中都为13。因此,请记住这一点:
问题内容: 我想要一个文本区域,可以处理按 Tab 键的情况。 在默认情况下,如果您按 Tab 键,则焦点将离开文本区域。但是,当用户想要在文本区域中输入 Tab 键时会怎样呢? 我可以捕捉到此事件并将焦点返回到文本区域并将标签添加到 当前 光标位置吗? 问题答案: