无法检测到在移动设备(文本区域)上按输入
Can't detect enter press on mobile (textarea)
要检测输入按,我正在使用简单的解决方案:
if (e.keyCode == 13) {
// do something
}
在桌面上,它可以在任何地方正常工作。在平板电脑,智能手机上 - 也是 - 但是,如果涉及到文本区域,这是行不通的。
自从上次Chrome更新很少以来,它就成为一个问题。
因此,当您从移动设备按回车键时,您只看到换行符"'",但没有执行函数。
那么,如何在最新的chrome版本上检测移动设备上的文本区域输入?
虽然这可能是Chrome特定的错误,但这些可能是一些可能的解决方案:
-
还要检查
e.which
:var key = e.which || e.keyCode || 0; if (key == 13) { // do something }
-
尝试其他事件:例如,如果您使用的是
keyUp
,请尝试keyPress
如果
这仍然不起作用,如果检测很重要,您可能需要解决方法。您可以跟踪该值,并在使用 input
事件将"'"添加到文本区域时进行检测。
var textarea = document.getElementById('your-textarea');
var textareaValue = textarea.value;
var textareaLines = getLines(textareaValue);
function getLines(str) {
// This uses RegEx to match new lines.
// We use || [] because it would otherwise fail if there weren't
// any line breaks yet.
return (str.match(/['n'r]/g) || []).length;
}
textarea.addEventListener('input', function() {
var newValue = textarea.value;
var newLines = getLines(newValue);
if (newLines > textareaLines
&& newValue.length == textareaValue.length + 1) {
// We also check that the new length is only one
// character longer to not fire this new line event
// after a copy-paste with a new line character.
doSomething();
}
textareaValue = newValue;
textareaLines = newLines;
}, false);
如果像我一样使用反应,onKeyPress={e => e.key}
工作。
e.key
在浏览器和移动设备上返回"输入"
e.code
仅在浏览器上返回"输入"
相关文章:
- onkeyup无法动态创建多个文本区域
- 具有所有样式的文本正在复制到可编辑文本区域
- 在文本区域POST后解码JSON
- HTML文本区域文本到XML
- 阻止在文本区域/文本框中输入数字
- 使用 javascript 单击图片后更改<文本区域>文本
- 使用 javascript 检测文本区域/文本输入中的 HTML 标记,但它应该支持常见的>和<
- 在按 Tab 键时选择文本区域文本
- 切换文本区域文本,但保留对文本的更改
- 清除文本区域/文本框内容的按钮
- 加载页面时,聚焦并全选文本区域文本
- 如何使可编辑文本区域文本不可选择
- 我的文本区域文本是't用javascript将我想要的样式设置为CSS
- 使用jQuery将文本区域文本安全地存储在隐藏字段中,然后稍后在PHP中使用该文本
- 删除文本区域文本提交在新的选项卡
- 如何在添加新文本时保持文本区域文本静态
- 使用 jQuery 将文本区域文本设置为格式正确的 HTML 代码
- 为什么文本添加到区域文本是通过页面刷新,而不是直接刷新
- 使用 jquery 修改文本区域文本
- 如何使用Javascript在文本区域(文本框)中单击(光标闪烁)而不使用鼠标单击