我遇到的问题是,当用户在移动设备浏览器上输入时,事件处理程序不会运行。
我的javascript代码工作方式如下:当用户编写某些内容并按空格键代码时,会自动为主题标签系统添加#(diez)
标记。就像你写的那样:this is test message
,javascript代码就像这样改变它:#this #is #test #message
。
如果您在计算机浏览器(Chrome, Safari, Firefox, Opera
)上查看此DEMO,则说明工作正常。
但是,如果您在移动浏览器上检查此DEMO,则在键入某些内容时,事件处理程序不会运行。
$("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");
}
});
完整代码为 HERE 。
答案 0 :(得分:2)
我用此替换了代码的$(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();
}
});
});
如果您想知道这是您的问题:keyCode on android is always 229
如果您用我提供的代码替换代码后有任何错误,请告诉我。