javascript - 当我们使用 javascript 只允许文本框中的数字时允许使用 tab 键

标签 javascript regex

我写了一个 java 脚本,它只允许数字、逗号、点。我将它应用在四个文本框上。我的问题是我有 10 个文本框,它们接受不同类型的数据,我在其中四个上应用了 java 脚本。我可以在其他文本框上使用 Tab 键,但我无法在应用了 Java 脚本的文本框上使用移动类(class)。有什么我必须在我的脚本中做的改变......谢谢。

Java 脚本:-

function isNumberCommaDot(evt) {
         var theEvent = evt || window.event;
         var key = theEvent.keyCode || theEvent.which;
         key = String.fromCharCode(key);
         if (key.length == 0) return;
         var regex = /^[0-9,\9\b]*\.?[0-9]*$/;
         if (!regex.test(key)) {
             theEvent.returnValue = false;
             if (theEvent.preventDefault) theEvent.preventDefault();
         }
     }

我在正则表达式中使用了\9 但它仍然不接受制表键。(9 是 ASCII 字符。对于 TAB 键)

最佳答案

可以先检查是否是tab press,直接跳过处理

function isNumberCommaDot(evt) {
     var theEvent = evt || window.event;
     var key = theEvent.keyCode || theEvent.which;

     if (key === 9 ) { //TAB was pressed
        return;
     }

     key = String.fromCharCode(key);
     if (key.length == 0) return;
     var regex = /^[0-9,\9\b]*\.?[0-9]*$/;
     if (!regex.test(key)) {
         theEvent.returnValue = false;
         if (theEvent.preventDefault) theEvent.preventDefault();
     }
 }

您可以找到更多信息 here

关于javascript - 当我们使用 javascript 只允许文本框中的数字时允许使用 tab 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21575723/

相关文章:

php - if(x==1 || x==5 || x==7 || x==22) 的更短写法

javascript - 模块误差 Angular 1.5

regex - 为什么这个正则表达式不起作用 : find ./-regex '.*\(m\|h\)$

regex - Perl 正则表达式中的括号有什么作用?

java - 正则表达式验证 3 个重复字符

javascript - js对象和属性

javascript - 使用 onload 加载多个图像以调用函数,只有最后一个加载调用函数

javascript - 如何将货币文本框中的 * 转换为 000?

regex - perl 中的内联正则表达式替换

ruby-on-rails - 如何替换字符串中的每个子字符串?