keypress事件未在移动设备上运行

我遇到的问题是,当用户在移动设备浏览器上键入时,事件处理程序未运行。

我的javascript代码是这样工作的:当用户编写someting并按空格键代码时,会自动为#(diez)标签系统添加#(diez)标签。 就像你写的: this is test message ,javascript代码改变它: #this #is #test #message all after space。

如果您在计算机浏览器( Chrome, Safari, Firefox, Opera )上查看此DEMO Chrome, Safari, Firefox, Opera它可以正常工作。

但是,如果您在移动浏览器上检查此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"); } }); 

完整代码在这里

我用你的代码替换了$(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

如果您用我提供的代码替换代码后有任何错误,请告诉我。