文本区域控制-自定义行为输入/ctrl+enter
textarea control - custom behavior enter/ctrl+enter
我有以下简单的<textarea>
<textarea id="streamWriter" rows="1" cols="20" placeholder="Writer"></textarea>
我也有以下jQuery/JavaScript代码块:
$('textarea#streamWriter').keydown(function (e) {
if (e.keyCode == 13) {
if (e.ctrlKey) {
alert('ctrl enter - go down a line as normal return would');
return true;
}
e.preventDefault();
alert('submit - not your default behavior');
}
});
我试图强迫不创建一个新的换行正常返回键下。但是如果我输入的是Ctrl+Enter,我想要这种行为。
这可以检测到差异,但不会强制执行我需要的行为。如果你用过Windows Live Messenger,我需要相同的文本框行为。按回车键提交(在我的例子中,我将调用一个函数,但会阻止文本区向下移动),按Ctrl+Enter键向下移动一行。
解决方案?谢谢。
<标题>更新:$('textarea#streamWriter').keydown(function (e) {
if (e.keyCode == 13) {
if (e.ctrlKey) {
//emulate enter press with a line break here.
return true;
}
e.preventDefault();
$('div#writerGadgets input[type=button]').click();
}
});
以上就是我想要做的。这里只有用换行符模拟回车键的部分。如果你知道,请告诉我怎么做。
标题>使用keypress
代替keydown
工作稍微好一点,但是不能与Ctrl键一起工作;我切换到shift键- jsfiddle。
编辑:据我所知,你将无法使用Ctrl键一致跨浏览器,因为浏览器使用它自己的快捷键。
再次编辑:我有一个解决方案,可以使用Ctrl键- jsfiddle。
$('textarea#streamWriter').keydown(function (e) {
if (e.keyCode === 13 && e.ctrlKey) {
//console.log("enterKeyDown+ctrl");
$(this).val(function(i,val){
return val + "'n";
});
}
}).keypress(function(e){
if (e.keyCode === 13 && !e.ctrlKey) {
alert('submit');
return false;
}
});
编辑:这不是100%的工作,它只工作,如果你不在文本的中间。我得想办法让代码在中间的文字上起作用
顺便说一下…你为什么这样做?如果用户按输入来创建新行,表单在他们准备好之前就突然提交了,这不会让用户感到困惑吗?
Clear VanillaJS:
document.querySelector('#streamWriter').addEventListener('keydown', function (e) {
if (e.keyCode === 13) {
// Ctrl + Enter
if(e.ctrlKey) {
console.log('ctrl+enter');
// Enter
} else {
console.log('enter');
}
}
});
Kevin B的解决方案在Mac上运行良好,但在windows上不行。
在windows下,当按ctrl +enter时,keyCode为10而不是13。
相关文章:
- JavaScript:在调用函数的文本输入上按enter键
- 当阻止Enter键提交AJAX表单时,关注下一个输入是't工作
- 如何通过按Enter提交输入表格,但在按shift和Enter时不提交
- 如何使文本、数字和日期html输入字段以一致的方式支持Ctrl+Z(撤消)
- 捕获所有关键输入,直到以响应式编程方式按下 ENTER
- 如果用户在输入上按 Enter 键,则取消挖空速率限制扩展器
- 当用户点击ctrl+enter时,如何将光标推到下一行
- 自定义CSS输入框,使页面按ENTER键刷新
- CTRL S函数添加一个S.如果光标留在输入字段中,如何停止它
- 如何检测用户何时在输入字段中按Enter键
- 按下“Enter”键时删除输入框中的文本
- tinyMCE:如何添加快捷键Ctrl + Enter
- 如何防止操作系统“另存为”对话框在输入 Ctrl S 时弹出
- 如何使用 Jquery 将“CTRL + ENTER”用作“ENTER”
- 使用JavaScript的Ctrl+Enter可防止回车
- 文本区域控制-自定义行为输入/ctrl+enter
- 如何使用jquery绑定ctrl+enter到ajax表单提交
- 当用户在ext .form.field. htmlitor中键入文本时,捕获Ctrl+Enter
- 在GitHub的新问题页面的标题文本框中按Ctrl+Enter或Enter创建确认弹出框的用户脚本
- 用户脚本,用于在提交问题或通过在 GitHub 中按 Ctrl+Enter(内置热键)发布评论时创建确认弹出窗口