我有一个计算器的文本输入,它已经设置为只接受数字,我想允许正整数和负整数,但是当使用输入时,我想禁止+和 - 输入。相反,我希望这些输入能够执行操作。
display.keypress(function() {
if (temp === 0 && $(this).val().isInteger()) {
temp = $(this).val().toString();
} else if ($(this).val().isSafeInteger()) {
temp += $(this).val().toString();
}
});
答案 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;
答案 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"/>
密码: