[英]keypress event is not running on a mobile device
我遇到的问题是,当用户在移动设备浏览器上键入内容时,事件处理程序未运行。
我的javascript代码是这样工作的:当用户写点东西并按空格时,javascript代码会自动为#(diez)
标签系统添加#(diez)
标签。 就像您编写: this is test message
,javascript代码将其更改为: #this #is #test #message
所有空格之后。
如果您在计算机浏览器( Chrome, Safari, Firefox, Opera
)上检查此DEMO Chrome, Safari, Firefox, Opera
则可以正常运行。
但是,如果您在移动浏览器上选中此DEMO ,则在键入someting时事件处理程序将不会运行。
$("body").on("keypress","#text", function(e) {
var code = e.charCode || e.keyCode || e.which;
if (charactersX.has(code)) {
var text = $("#text").text();
text = addHashtags(text);
$("#text").text(text);
placeCaretAtEndX(document.querySelector("#text"));
console.log(text);
} else if (forbiddenCharactersX.has(code)) {
e.preventDefault();
console.log("something");
}
});
完整的代码在这里 。
我用$(document).on("keypress", "#textInpu", function(){.....})
替换了$(document).on("keypress", "#textInpu", function(){.....})
部分,此错误消失了:
$(document).on("textInput", "#text", function(event) {
var code = event.originalEvent.data.charCodeAt(0);
if (charactersX.has(code)) {
// Get and modify text.
var text = $("#text").text();
text = addHashtags(text);
// Save content.
$("#text").text(text);
// Move cursor to the end
placeCaretAtEndX(document.querySelector("#text"));
} else if (forbiddenCharactersX.has(code)) {
e.preventDefault();
}
});
});
如果您想知道,这就是您的问题: Android上的keyCode始终为229
如果将代码替换为我提供的代码后出现任何错误,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.