min="0" max="99"),但它没有起作用,而且据我所知,某些浏览器不支持这种属性。
因此,我正在使用此脚本来阻止非数字字符,但我想将数字限制在最大值为99(仅限2位数)。我该怎么做?
另外,我希望允许用户使用键盘输入数字。
$(".js-number").numeric();
min="0" max="99"),但它没有起作用,而且据我所知,某些浏览器不支持这种属性。
因此,我正在使用此脚本来阻止非数字字符,但我想将数字限制在最大值为99(仅限2位数)。我该怎么做?
另外,我希望允许用户使用键盘输入数字。
$(".js-number").numeric();
<input class="test-input" type="number" maxlength="12" />
<script>
$('.test-input').unbind('keyup change input paste').bind('keyup change input paste',function(e){
var $this = $(this);
var val = $this.val();
var valLength = val.length;
var maxCount = $this.attr('maxlength');
if(valLength>maxCount){
$this.val($this.val().substring(0,maxCount));
}
});
</script>
<input type="number" class="js-number" min="0" max="99" value="0">
<script>
$(".js-number").bind('keydown', function(e){
var targetValue = $(this).val();
if (e.which ===8 || e.which === 13 || e.which === 37 || e.which === 39 || e.which === 46) { return; }
if (e.which > 47 && e.which < 58 && targetValue.length < 2) {
var c = String.fromCharCode(e.which);
var val = parseInt(c);
var textVal = parseInt(targetValue || "0");
var result = textVal + val;
if (result < 0 || result > 99) {
e.preventDefault();
}
if (targetValue === "0") {
$(this).val(val);
e.preventDefault();
}
}
else {
e.preventDefault();
}
});
</script>
function format(input){
if(input.value < 0) input.value=Math.abs(input.value);
if(input.value.length > 2) input.value = input.value.slice(0, 2);
$(input).blur(function() {
// if(input.value.length == 1) input.value=0+input.value;
// if(input.value.length == 0) input.value='01';
//* if you want to allow insert only 2 digits *//
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="number" name="number" step="1" oninput="format(this)">
它对我有效...希望对你也有效 :)
<input type="text" class="js-number" maxlength="2">
maxlength会起作用,但如果类型不是数字,它也会接受字符。 - Rayon您可以在HTML的input中使用maxlength="2",并在Javascript函数中使用this.value = this.value.replace(/[^\d]/, '')
maxlength="2":它仅允许通过文本输入两个条目(假设是数字),因此最大的两位数是99,最小的两位数是-9(-也被视为一个条目),但如果去掉-符号,则最小数字是00,这解决了00-99的范围问题现在input是type=text,因此任何字母都可以与符号(- @ $...)一起输入,为了解决这个问题,使用JavaScript正则表达式
this.value = this.value.replace(/[^\d]/, ''):它从每个数字输入中获取值并检查它是否为数字。如果是数字,则该输入将保留原样,但如果输入不是数字,则将其替换为'',即从输入中删除。因此,只有数字输入被解决,而没有-符号document.getElementsByClassName("orderUnits")[0].addEventListener("input", amountofUnits);
function amountofUnits() {
this.value = this.value.replace(/[^\d]/, '')
}
<input type="text" class="orderUnits" maxlength="2">