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

时间:2017-07-23 23:35:43

标签: javascript android jquery mobile

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

我的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

1 个答案:

答案 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

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