Javascript 当我们使用java脚本只允许文本框中的数字时,允许tab键

Javascript 当我们使用java脚本只允许文本框中的数字时,允许tab键,javascript,regex,Javascript,Regex,我编写了一个java脚本,它只允许数字、逗号和点。我在四个文本框上应用了它。我的问题是我有10个文本框,其中包含不同类型的数据,我在其中的四个文本框上应用了java脚本。我可以在其他文本框上使用tab键,但不能在java脚本应用文本框上使用tab键来移动courser。我的剧本里有没有什么需要修改的地方。。。谢谢 Java脚本:- function isNumberCommaDot(evt) { var theEvent = evt || window.event;

我编写了一个java脚本,它只允许数字、逗号和点。我在四个文本框上应用了它。我的问题是我有10个文本框,其中包含不同类型的数据,我在其中的四个文本框上应用了java脚本。我可以在其他文本框上使用tab键,但不能在java脚本应用文本框上使用tab键来移动courser。我的剧本里有没有什么需要修改的地方。。。谢谢

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,但它仍然不接受tab键。(9是ASCII字符。对于tab键)

您可以检查它是否是先前的tab键,只需跳过处理即可

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();
     }
 }

您可以找到更多信息

您可以检查之前是否按了制表键,只需跳过处理即可

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();
     }
 }
你可以找到更多信息