如果光标位于 TEXTAREA 并按下 Ctrl + Enter ,我该如何触发?使用 jQuery 。感谢
答案 0 :(得分:127)
答案 1 :(得分:113)
您可以使用event.ctrlKey
标志来查看 Ctrl 键是否被按下,如下所示:
$('#textareaId').keydown(function (e) {
if (e.ctrlKey && e.keyCode == 13) {
// Ctrl-Enter pressed
}
});
检查上面的代码段here。
答案 2 :(得分:53)
通用解决方案
也支持OS X.
if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
// do something
}
答案 3 :(得分:4)
我发现其他人的答案不完整或不兼容跨浏览器。
此代码适用于Google Chrome。
$(function ()
{
$(document).on("keydown", "#textareaId", function(e)
{
if ((e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
{
alert('ctrl+enter');
}
});
});
答案 4 :(得分:2)
这可以扩展为简单但灵活的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时,应该提交一个表单,并将焦点放在该表单的textarea上。
答案 5 :(得分:0)
首先你必须在按下 Ctrl 时设置一个标志,执行onkeydown。然后你必须检查输入的keydown。当您看到 Ctrl 的密钥时,取消设置标记。
答案 6 :(得分:0)
$('my_text_area').focus(function{ set_focus_flag });
//ctrl on key down set flag
//enter on key down = check focus flag, check ctrl flag
答案 7 :(得分:0)
也许游戏有点晚了,但这就是我用的东西。它还将强制提交作为光标当前目标的表单。
$(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();
}
});