当光标位于TEXTAREA内并按Ctrl+时,如何触发某些内容Enter?使用jQuery。谢谢
Answers:
您可以使用该event.ctrlKey
标志来查看是否Ctrl按下了键,如下所示:
$('#textareaId').keydown(function (e) {
if (e.ctrlKey && e.keyCode == 13) {
// Ctrl-Enter pressed
}
});
在此处查看上面的代码段。
10
不是13
。
keypress
事件时,键码将为10,但keydown
或keyup
将报告13。仅测试镶边
ctrlKey
对应于Mac上的Command键?
if ((e.keyCode == 10 || e.keyCode == 13) && (e.ctrlKey || e.metaKey))
通用解决方案
这也支持macOS:Ctrl+Enter和⌘ Command+Enter将被接受。
if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
// do something
}
e.ctrlKey
检测⌃ Control
并e.metaKey
检测⌘ Command
。如果要同时按Ctrl-Enter和Command-Enter来触发行为,请使用此选项。
我发现其他人的答案不完整或与跨浏览器不兼容。
此代码适用于谷歌浏览器。
$(function ()
{
$(document).on("keydown", "#textareaId", function(e)
{
if ((e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
{
alert('ctrl+enter');
}
});
});
可以将其扩展为简单但灵活的JQuery插件,如下所示:
$.fn.enterKey = function (fnc, mod) {
return this.each(function () {
$(this).keypress(function (ev) {
var keycode = (ev.keyCode ? ev.keyCode : ev.which);
if ((keycode == '13' || keycode == '10') && (!mod || ev[mod + 'Key'])) {
fnc.call(this, ev);
}
})
})
}
从而
$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl')
当用户按ctrl-enter并专注于该表单的文本区域时,应提交表单。
也许游戏有点晚了,但这就是我使用的。它还将强制提交作为光标当前目标的表单。
$(document.body).keypress(function (e) {
var $el = $(e.target);
if (e.ctrlKey && e.keyCode == 10) {
$el.parents('form').submit();
} else if (e.ctrlKey && e.keyCode == 13) {
$el.parents('form').submit();
}
});
if
… else if
”简化为一个if (e.ctrlKey && (e.keyCode == 10 || e.keyCode == 13))
。