Javascript 将起始为零的int转换为字符串以检查长度
我在html页面中有一个html输入type=“number”字段。像这样:Javascript 将起始为零的int转换为字符串以检查长度,javascript,integer,tostring,Javascript,Integer,Tostring,我在html页面中有一个html输入type=“number”字段。像这样: <input type="number"> 要验证表单,我需要检查此字段的长度是否正好为3。为此,我将数字转换为字符串并执行length()函数 当数字以零开始时,问题就出现了。像065 在这种情况下,toString()方法输出长度为2的65 你知道如何得到正确的数字长度吗 我认为您必须将输入类型设置为文本,然后使用JavaScript获取验证长度。之后,您可以使用number()函数将其转换为数字
<input type="number">
要验证表单,我需要检查此字段的长度是否正好为3。为此,我将数字转换为字符串并执行length()
函数
当数字以零开始时,问题就出现了。像065
在这种情况下,toString()
方法输出长度为2的65
你知道如何得到正确的数字长度吗 我认为您必须将输入类型设置为文本,然后使用JavaScript获取验证长度。之后,您可以使用number()函数将其转换为数字。将输入类型更改为text,并使用pattern和maxlength限制输入:
<input type="text" pattern="\d*" maxlength="3">
您可以通过以下两种方法之一解决此问题:
当用户将焦点从字段移开时,删除前导零
在验证中,删除前导零,然后检查长度
不需要转换为数字
焦点丢失时删除前导零:
function truncateNumericInput(event) {
event = event || window.event;
event.target = event.target || event.srcElement;
if (event.target.nodeName != "INPUT" || event.target.type != "number") {
return;
}
var input = event.target,
value = event.target.value;
input.value = value.indexOf(".") > -1
? value.replace(/^0{2,}/, "0")
: value.replace(/^0+/, "");
}
if (document.addEventListener) {
document.addEventListener("blur", truncateNumericInput, true);
} else {
document.attachEvent("focusout", truncateNumericInput);
}
JSFiddle:
在验证过程中删除前导零
var regex = /^0+/;
var value = input.value.replace(regex, "");
console.log(value.length <= 3)
var regex=/^0+/;
var value=input.value.replace(regex,“”);
console.log(value.length
这需要注意的是,只能输入数字,直到999,即最多3位,您可以使用输入类型作为数字来解决问题。您可以使用溢出和下溢来构建逻辑,如下所示
<input id="numtest" type="number" min="10" max="20" />
document.getElementById('numtest').validity.rangeOverflow
document.getElementById('numtest').validity.rangeUnderflow
or
document.getElementById('numtest').checkValidity();
document.getElementById('numtest').validity.rangeOverflow
document.getElementById('numtest').validity.rangeUnderflow
或
document.getElementById('numtest').checkValidity();
rangeUnderflow:如果值小于最小值,则返回true
rangeOverflow:如果值大于最大值,则返回true。也许您应该将输入类型设置为字符串而不是数字,并在确实需要将其转换为数字时转换为数字。@出于这个原因,我更喜欢将所有数字输入设为字符串,并在以后需要数字时对其进行解析,以便于验证。console.log(“065.toString());
仅打印065
如何在开始时检索数字?我看不出你想做什么?如果你想要正好三个,并且少于三个,用零填充它?
<input id="numtest" type="number" min="10" max="20" />
document.getElementById('numtest').validity.rangeOverflow
document.getElementById('numtest').validity.rangeUnderflow
or
document.getElementById('numtest').checkValidity();