我有一个文字input
,我想限制只有数字。没有其他人物。我也希望限制在0到255之间。
如果是非法的' char,或输入金额,我希望它等待一秒钟然后删除该字符或数字。我到目前为止能够得到非法角色。
这是我想做的事情:
如果输入的数量超过255,我只想等待最后一位数字,然后自行删除。就像非法的'字符。
我已经实施了非法角色。这是代码:
$('input[name="number"]').keyup(function(e) {
if (/\D/g.test(this.value)) {
// Filter non-digits from input value.
this.value = this.value.replace(/\D/g, '');
}
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="number" />
&#13;
答案 0 :(得分:3)
尝试使用if
条件检查this.value
是否大于255
,如果为真,请使用this.value
<将String.prototype.slice()
设置为输入的前两个字符< / p>
让它等一下怎么样?
尝试使用setTimeout()
function disableInput(el) {
// create array of checks on `el.value`
var checks = [/\D/g.test(el.value), el.value > 255];
// if `el.value` contains non-digit character,
// or is greater than 255 ;
// `Array.prototype.some()` checks for `true` value
// if either `checks[0]`, or `checks[1]` is `true` do stuff
// else set `el.value` to user input
if (checks.some(Boolean)) {
// disable input
$(el).prop("disabled", true)
// delay 1 second
setTimeout(function() {
if (checks[0]) {
// Filter non-digits from input value.
el.value = el.value.replace(/\D/g, '');
}
// if `this.value` greater than 255 , set `this.value` to
// first two characters of input
if (checks[1]) {
el.value = el.value.slice(0, 2);
};
$(el).prop("disabled", false).val(el.value).focus()
}, 1000)
}
}
$('input[name="number"]').keyup(function(e) {
disableInput(this)
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="number" />
&#13;