javascript - 正则表达式替换输入字段中的符号

标签 javascript jquery regex

我有一个输入字段和一个带有正则表达式的代码,使其只能输入数字

$('input').keyup(function () { 
    this.value = this.value.replace(/[^0-9]/g,'');
}); 

但是当有人尝试编辑字段中间的符号时,光标会放置在字段的末尾。这使得编辑变得困难,因为您必须删除要编辑的符号之后的所有符号。

一个简单的演示:

http://jsfiddle.net/NehmP/

有人可以帮我解决这个问题吗?

最佳答案

仅当新字符串与旧字符串不同时才应替换:

$('input').keyup(function () { 
   var v = this.value.replace(/[^0-9]/g,'');
   if (v!=this.value) this.value = v;
}); 

这样只要值有效,光标就不会放在末尾。

Demonstration

关于javascript - 正则表达式替换输入字段中的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16148327/

相关文章:

javascript - 如何强制将链接另存为,下载链接,而不是忽略事件的服务人员?

javascript - jquery Slider - 如何计算百分比

javascript - 如何在html页面中调用jquery?

jquery - 使用 jQuery 查找 DOM 中的元素

ruby-on-rails - 使用 Ruby 从字符串中删除 bytesize 大于 2 的字符

regex - 如何在 Perl 的整个匹配输出中突出显示捕获组(例如,用括号括起来)

javascript - 来自元素属性的自定义错误消息 : jQuery Validate Plugin

javascript - 在API中发出请求并计算结果

javascript - 多级 xml 到 jquery 中的无序列表

r - 如何在 R 中搜索和隔离 FASTA 格式文本的属性