我正在增强(按角度指令),如果未选择任何选项,谷歌放置自动完成输入以选择第一个选项。
我正在使用下面的代码,当使用“ tab”或“ enter”键时,它的作用就像一个超级按钮。
不幸的是,它不能在具有 virtualkeyboard“ next” key ...
的android设备(chrome)上运行此“ 下一个”键的键代码是什么,因为它既不是“ tab”键(9)也不是“ enter”键(13)
selectFirstOnEnterOrTab(input) {
// prevent submit on enter (13)
$(input).keydown(function (e) {
if (e.which === 13 && $('.pac-container:visible').length) {
return false;
}
});
// store the original event binding function
const _addEventListener = (input.addEventListener) ? input.addEventListener : input.attachEvent;
function addEventListenerWrapper(type, listener) {
// Simulate a 'down arrow' keypress on hitting 'return' when no pac suggestion is selected,
// and then trigger the original listener.
if (type === 'keydown') {
const orig_listener = listener;
listener = function (event) {
const suggestion_selected = $('.pac-item-selected').length > 0;
if ((event.which >= 9 && event.which <= 13) && !suggestion_selected) {
const simulated_downarrow = $.Event('keydown', {
keyCode: 40, which: 40
});
orig_listener.apply(input, [simulated_downarrow]);
}
orig_listener.apply(input, [event]);
};
}
_addEventListener.apply(input, [type, listener]); // add the modified listener
}
if (input.addEventListener) {
input.addEventListener = addEventListenerWrapper;
} else if (input.attachEvent) {
input.attachEvent = addEventListenerWrapper;
}
}
编辑
按照Pitto的建议,我已经在Android设备上记录了哪些代码和键码,对于我按下的所有键,我都收到229,这显然是android的正常行为。 关于如何更新代码以使其也可以在Android设备上运行的任何想法...
EDIT2
在android上,在按下“ next”时,没有触发 keydown 事件
答案 0 :(得分:0)
您可以尝试使用此代码设置一个最小页面,看看它是否打印正确的值?
document.body.addEventListener("keyup", function(event) {
console.log(event.key);
console.log(event.code);
});
或者,甚至更容易地,您可以使用以下网站获取密钥代码:
https://keycode.info
由https://keycode.info返回的我的Samsung S10e的Tab键数据:
event.key = Unidentified
event.location = 0
event.which = 229
event.code =
答案 1 :(得分:0)
正如已经指出的,e.which
/ e.keyCode
的值为229
,而e.key
的值为'Unidentified'
。您可以使用https://keyjs.dev进行检查,并在其中找到有关虚拟/移动键盘的说明:
使用虚拟/移动键盘(正式称为IME(输入法编辑器))时,W3C标准规定KeyboardEvent的e.keyCode应该为229,而e.key应该为“ Unidentified”。
移动设备上最好的选择可能是在下拉菜单中添加一个展开/向下箭头,并让用户根据需要手动打开它。