此Meteor客户端事件在桌面浏览器上运行正常但在移动浏览器“Chrome”上无法执行相同操作。
它在“@”之后检测到“g”的键输入,并将其替换为“@ gmail.com” 知道如何让它在手机上工作吗? THX
Template.input.events({
'keypress input': function (evt, template) {
if (evt.which === 13) {
//do stuff
}
else if (Session.get('taskSelected') === 'walk') {
if (evt.which == 103) { // "g" has been typed do gmail.com
utility.inputReplaceWith('gmail.com', evt);
}
else if (evt.which === 121) { // "y" for yahoo.com
utility.inputReplaceWith('yahoo.com', evt);
}
else if (evt.which === 104) {
utility.inputReplaceWith('hotmail.com', evt);
}
}
}
});
inputReplaceWith: (text, evt) => {
let elem = document.getElementsByName('email')[0].value;
if (elem.slice(-1) == '@') { // last char is "@"
evt.preventDefault();
document.getElementsByName('email')[0].value = elem + text;
}
},
答案 0 :(得分:1)
有一个textInput
事件为您提供输入的字符,也可以取消
const inputField = document.getElementById('wanted-input-field');
inputField.addEventListener('textInput', function(e) {
// e.data will be the 1:1 input you done
const char = e.data; // In our example = "a"
// If you want the keyCode..
const keyCode = char.charCodeAt(0); // a = 97
// Stop processing if "a" is pressed
if (keyCode === 97) {
e.preventDefault();
return false;
}
return true;
});
答案 1 :(得分:0)
Chrome for Android中的"keypress"
事件看起来很麻烦。
请参阅:
TL; DR:改为使用"keydown"
和/或"keyup"
个事件,甚至是"input"
个事件。