javascript - 如何自动将光标设置为输入标签
问题描述
我有一个输入标签,我想做的是听/
按键并自动将光标设置到输入标签以开始在其上输入。谷歌已经有了这个,当你按下/
键时会自动进入搜索栏。我怎样才能做到这一点。任何帮助表示赞赏。提前致谢。
document.onkeypress = function(evt) {
evt = evt || window.event;
var charCode = evt.keyCode || evt.which;
var charStr = String.fromCharCode(charCode);
if (charStr == '/') {
//set cursor to input bar
}
};
#inputBar {
position: absolute;
top: 2%;
left: 3%;
}
<input id="inputBar" />
更新:正如建议的那样,焦点方法会做到这一点,但 / 字符也会在输入栏上注册。我该如何处理?/
如果在按键后 < 10 毫秒内检测到,我应该创建一个单独的函数来删除 / 字符。还是有其他更好的想法?
document.onkeypress = function(evt) {
evt = evt || window.event;
var charCode = evt.keyCode || evt.which;
var charStr = String.fromCharCode(charCode);
if (charStr == '/') {
//set cursor to input bar
document.getElementById("inputBar").focus();
}
};
<input id="inputBar" />
解决方案
这应该可以满足您的所有要求。我使用 keydown 而不是 keypress 因为后者已被弃用。
document.addEventListener('keydown', function (e) {
const inputBar = document.getElementById("inputBar")
const isFocused = inputBar === document.activeElement
if (isFocused) return
if (e.code == 'Slash') {
e.preventDefault()
inputBar.focus()
};
});
推荐阅读
- c# - 实体框架代码优先迁移不生成外键并忽略 ForeignKey 数据注释
- java - 降序排列
- php - 本地开发服务器未输出所有错误
- c# - 如何使用 C# 从 API 中的请求中获取标头
- python - 使用 Dropbox API 和 Pickle 上传 Python 对象
- linux - 如何使用嵌套并行代替循环
- python - 关于如何解决这个不等式的任何见解:n!<= 10^6?
- excel - 收到与 Range 相关的错误,但不知道为什么
- node.js - 为什么这个 NodeJS 代码返回空响应对象?
- javascript - 错误模块解析失败:意外的令牌 - Webpack