0

我有一个绑定到元素的按键功能,该元素只需要允许正负十进制字符。即 0-9, '.' , '-'

我需要防止输入字符的任何其他字符

有没有办法在当前的按键功能中实现这一点

 $('.test').keyup(function (event) {

     //if character is NOT ok i.e. 0-9, '.' , '-'
     //STOP
     ..ELSE
    //continue to do something

});

PS我正在使用jquery

4

3 回答 3

1

另一种方法是在键入时替换所有非法字符:

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

当用户不输入文本而是粘贴它时,可能很有用。

于 2012-10-26T16:54:40.827 回答
0

密钥是在 keydown 上插入的,因此您应该改用该事件。那么这应该工作:

$('.test').on('keyup', function(e){
  e.preventDefault();
  if(e.keyCode >= 48 && e.keyCode <= 57 // regular numbers
     || e.keyCode >= 96 && e.keyCode <= 106 // Numpad
     || e.keyCode === 189 // Minus
  ){
    try{
      parseInt($(this).val());
      // Continue, this is a valid numeric value.
    }catch(ex){
       // Stop
    }
  }else {
    // Stop
  }
});
于 2012-10-26T16:51:14.043 回答
-1

希望这可以帮助:

var string = '-10.56',
    illegal = /[^0-9.-]/.test(string); // return true if illegal character found
于 2012-10-26T16:46:28.500 回答