移动网络应用上的Keyup似乎仍然不能覆盖内容块

keyup on mobile web apps seems to still not override a content block

本文关键字:不能 覆盖 网络应用 Keyup 移动      更新时间:2023-09-26

我有一些输入,我从输入文本框上的keyup事件获得。

$(selector).keyup(function(){
  var str = $(this).val();
  var X = 2;
  var Y = 1;
  $(this).val(str.substring(X,Y));
});

在标准的webapp中查看时,$(this).val()没有新按下的键。我应该关注生命周期的哪一部分?当在一个web应用程序中这样做时,它似乎按计划执行,但在iOS webview/移动应用程序中使用它时却不是这样

编辑:

似乎这些侦听器的生命周期实际上是不同的。在执行keyup时,它将$(this).val()识别为旧内容加上新字符,而在移动设备上,它只识别旧内容。新字符很容易通过以下方式获得:

String.fromCharCode(event.which)

但是在生命周期的那个点,我不能说不删除它。我正在研究其他事件的想法,以及做像event.preventDefault();event.stopPropagation();之类的事情,但我不确定该去哪里。

知道如何工作和处理这类事件,或监听器将是伟大的。与我目前的逻辑,它是需要的,当我有新的内容集。也许一个简单的on("input")就足够了?

指导高度赞赏。:)

关于keyup()的页面文档:

对于捕获实际的文本输入,.keypress()可能是更好的选择。

解决我的编码问题:

1)将事件从keyup更改为keypress。2)执行以下操作:

var reg = new RegExp("''D");
if(reg.test(String.fromCharCode(event.which))){
  var str = $(this).val();
  var strArr = str.split("");
  // for handling when people maintain the press, 
  //    i created a range array to delete the range.
  strArr.splice(cRange[0], cRange[1]-cRange[0]+1); 
  str = strArr.join("");
  $(this).val(str);
  event.preventDefault();
}