繁体   English   中英

按键事件未在移动设备上运行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM