我试过这个。这只接受整数。我想既是消极的也是非消极的。Jquery接受负值和非负值
$(function() {
$('.spinner').keyup(function() {
if (this.value.match(/[^0-9]/g)) {
this.value = this.value.replace(/[^0-9]/g, '');
}
});
});
我试过这个。这只接受整数。我想既是消极的也是非消极的。Jquery接受负值和非负值
$(function() {
$('.spinner').keyup(function() {
if (this.value.match(/[^0-9]/g)) {
this.value = this.value.replace(/[^0-9]/g, '');
}
});
});
没有测试过,但你尝试过这样的事情:
$(function() {
$('.spinner').keyup(function() {
if (this.value.match(/[^0-9-]/g)) {
this.value = this.value.replace(/[^0-9-]/g, '');
}
});
});
通过添加额外的“ - ”在REG-EX:第一种是指定一个范围,第二一个实际的字符。
您还可以细化的全过程,始终将值设置为:匹配的一切:
^[-]{0,1}[0-9]+
启动线由什么或 - 随后的数字继承,至少一个或多个。
没有必要进行匹配和替换。取而代之的
if (this.value.match(/[^0-9]/g)) {
this.value = this.value.replace(/[^0-9]/g, '');
}
使用
this.value = this.value.replace(/([+-]?\d+)/, '$1');
我假设你只希望找到在该领域一个整数。
您可以继续使用正则表达式,或者如果你喜欢“纯逻辑”这对于我的眼睛是更具可读性,你可以用这样的代码:
$('.spinner').keyup(function (evt) {
var previousValue = $(this).data("prev") || "";
var currentValue = this.value;
var valid = true;
if (currentValue.length > 0 && currentValue !== "-") {
//having something we can check:
var number = Number(currentValue);
//integer only if not NaN and integer value equals
valid = (!isNaN(number) && parseInt(number, 10) == number);
}
if (valid) {
$(this).data("prev", currentValue);
} else {
//restore last good value:
this.value = (previousValue.length == 0) ? "" : parseInt(previousValue, 10);
}
});
这将检查每一个时间,如果该值有效的整数当无效时,恢复通过验证的先前值。
请注意使用而不是parseInt()
,这是由于后面允许像“5a”这样的东西被解析为5而Number("5a")
将给出NaN值。
你能告诉我什么样的HTML元素是'$('。spinner')'? – kidwon
@PeterHerdenborg是的,它应该。他只需要删除非数字,如果它包含非数字。 – Barmar
是的,抱歉,我弄错了,这就是为什么我删除了我的评论。 –