Javascript - 测试非数字文本输入

时间:2017-02-21 20:02:07

标签: javascript jquery

我有一个计算器的文本输入,它已经设置为只接受数字,我想允许正整数和负整数,但是当使用输入时,我想禁止+和 - 输入。相反,我希望这些输入能够执行操作。

display.keypress(function() {
  if (temp === 0 && $(this).val().isInteger()) {
    temp = $(this).val().toString();
  } else if ($(this).val().isSafeInteger()) {
    temp += $(this).val().toString();
  }
});

3 个答案:

答案 0 :(得分:0)

这可能就是答案:



const isInteger = text => /[+-]?\d+/.test(text)

const data = ['1', '-1', '0.2', '-0,2']
for (let num of data){
    console.log(`${num} ${isInteger(num)}`)
}




你也可以试试这个:



const isNumber = text => /[+-]?\d+[,.]?\d*/.test(text)

const data = ['1', '-1', '0.2', '-0,2']
for (let num of data){
  console.log(`${num} ${isNumber(num)}`)
}




答案 1 :(得分:0)

我认为这可能就是你所要求的。我设置了一个布尔值来查看是否使用了其中一个运算符,然后我将其删除并最终清理输入;准备好处理操作的功能。



var numberInput = document.getElementById('numberInput');
numberInput.addEventListener('input', function(){
  var add = false;
  var subtract = false;
  if(this.value.indexOf('+') >= 0) add = true;
  if(this.value.indexOf('-') >= 0) subtract = true;
  if(isNaN(this.value.slice(-1))) this.value = this.value.slice(0, -1);
  if(add) addOperation();
  if(subtract) subtractOperation();
});

function addOperation(){
  console.log('add!');
}

function subtractOperation(){
  console.log('subtract!');
}

<input type="text" id="numberInput"/>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

为了不允许用户输入除数字之外的任何内容,您必须使用一个函数替换输入的onkeypress事件,如果该键有效则返回true,否则返回false。使用参数事件调用此函数,该事件包含有关按下的键的信息,因此您可以读取它并检查按下了哪个键。 但要限制它数字和+和 - 标志它是不够的。您确实希望您的用户能够使用退格键删除内部并删除,使用箭头和home / end。所以你也必须考虑这一点。所以你也必须检查这些键。 但这种解释使得它看起来比实际更难。我做了一个让事情更清晰的例子:

function sumSubtractionFunction(oper) {
	console.log(oper);
}

document.getElementById('display').onkeypress = function(event) {
   // first we check if + or - were pressed and call the function in that case
   if (['+', '-'].indexOf(event.key) > -1) {
       sumSubtractionFunction(event.key);
       return false;
   };
   
   // then we check if the key is one that should be allowed
   return ([8, 35, 36, 37, 38, 39, 40, 46].indexOf(event.keyCode) > -1)
          || (Number.isInteger(Number(event.key)));
};
<input type="text" id="display"/>

密码:

  • 8 - &gt;退格
  • 35 - &gt;家
  • 36 - &gt;结束
  • 37-40 - &gt;箭头
  • 46 - &gt;删除