1

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

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

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

编辑:

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

String.fromCharCode(event.which)

但在生命周期的那个时候,我不能说不删除它。我正在研究可能与其他事件相关的想法,以及做类似event.preventDefault();之类的事情。event.stopPropagation(); 但我不知道该去哪里。

任何想法如何工作和处理此类事件或侦听器都会很棒。以我目前的逻辑,当我有新的内容集时需要它。也许一个简单 的 on("input")就足够了?

指导高度赞赏。:)

4

1 回答 1

0

keyup() 页面上的 Jquery 文档:

为了捕捉实际的文本输入, .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();
}
于 2013-03-11T13:14:36.983 回答