JavaScript只允许数字,逗号,点,退格

时间:2014-01-27 06:49:31

标签: javascript regex

我写了一个javascript函数,只允许数字,逗号,点像这样

function isNumber(evt) {
              var theEvent = evt || window.event;
              var key = theEvent.keyCode || theEvent.which;
              key = String.fromCharCode(key);
              var regex = /^[0-9.,]+$/;
              if (!regex.test(key)) {
                  theEvent.returnValue = false;
                  if (theEvent.preventDefault) theEvent.preventDefault();
              }

}

但如果我想删除任何数字形式的文本框..退格不起作用。然后我将正则表达式代码更改为“var regex = /^[0-9.,BS]+$/;

仍然我无法在textbox中使用退格键。即使我在文本框中使用左右键我是做错了吗?任何人都可以帮助...谢谢。 (当我在正则表达式中使用“BS”而不是退格时,它允许文本框中的“B”,“S”字符..)

2 个答案:

答案 0 :(得分:5)

试试这段代码:

function isNumber(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.,\b]+$/;
          if (!regex.test(key)) {
              theEvent.returnValue = false;
              if (theEvent.preventDefault) theEvent.preventDefault();
          }
}

答案 1 :(得分:0)

尝试使用此代码,我对其进行了修改,并为我工作,仅允许和逗号,点和数字。

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