我遇到了一些功能问题。检测出焦点击键,集中输入并填充它(jquery)
当没有输入焦点时,我想要捕获用户按键,专注于特定输入,然后将所有已开始输入的文本输入到该输入中,然后输入任何前进的内容,直到他们移除焦点那个输入。
我的问题似乎是由于jquery的滞后?如果你开始输入“这仅仅是一个测试”成以下的jsfiddle
https://jsfiddle.net/bjgngayq/1/
HTML: <input type="text" id="search" />
JS:
$(function() {
$(document).on('keypress', function(e) {
var tag = e.target.tagName.toLowerCase();
if (e.which === 115 && tag != 'input' && tag != 'textarea' && tag != 'select') {
$('#search').focus();
$('#search').val(String.fromCharCode(e.which));
}
});
});
这似乎跳过前几个字母“氏”,然后加倍最后一个按键,你结束了“ ss只是一个测试“
可以有人(如果知道)在为什么这是发生和在哪里看。我正在寻找更多的原因而不是解决方案 - 如果我了解问题,我可以找出解决方案。
干杯。
OK,如果输入的是隐藏的,我只好先取消隐藏什么?那么,当元素被隐藏时,焦点似乎被忽略了?是否可以放置某种类型的计时器,并缓存用户击键,直到元素具有焦点,然后将缓存复制并允许从那时开始的击键追加? – Trent
@Trent是否应该在按键,取消隐藏和重点之间有任何有意的延迟?我不确定我是否理解需要定时器。 – digglemister
@Trent为什么不在聚焦之前在'keypress'上使用'.show()':https://jsfiddle.net/bjgngayq/5/ – digglemister