[英]Allow only 2 numbers on input type number
如何在输入类型编号上设置 0 到 99 之间的范围? 我正在使用 HTML5 属性( 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>
如果您删除 $(".js-number").numeric(); ,则您的示例有效。
但是您可以编辑输入。
maxlength 属性适用于输入类型文本,所以我想 javascript 验证是不可避免的。
<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>
你可以这样设置:
<input type="text" class="js-number" maxlength="2">
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)">
它对我有用......也希望对你有用:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.