是否可以限制用户可以进入字段的数字数。例如。
发布于 2020-10-22 14:12:26
HTML5为input标签引入了一个新的属性- pattern。可以将regex指定为模式属性值来验证输入。
pattern不适用于type="number",所以我将使用type="text"。type="tel"也能工作,但是除非你真的想输入一个电话号码,否则不要使用它。
<form>
<label for="num-input">3 or 8 digit number: </label>
<input id="num-input"
type="text"
required
pattern="\d{3}|\d{8}"
title="must be 3 or 8 digit"/>
<br/>
<input type="submit" value="submit" />
</form>
regex \d{3}|\d{8}匹配3位数字或8位数字。
发布于 2020-10-22 13:31:26
将其限制为三位数的最基本的HTML方法是:
<input type="number" max="999" min="-999" />但是,当用户手动输入值而不是使用输入的“添加”或“减”按钮时,这不会强制使用max或min属性。要验证这一点,您需要添加一些检查用户输入的javascript:
document.querySelector('input[max], input[min]').onblur = function (event) {
const numValue = Number(event.target.value);
// if within the expected range, do nothing
if (numValue < event.target.max && numValue > event.target.min) return;
// check if it's closer to max than to min,
// then set the value to max or min accordingly
event.target.value = event.target.max - numValue < event.target.min - numValue ?
event.target.max :
event.target.min;
}更新
经过进一步的检查,我意识到我误解了这个问题。
为了只允许三到八位数字,您可以使用以下验证:
document.querySelector('input').onblur = function (event) {
let valString = Number(event.target.value).toString();
if (valString.length === 3 || valString.length === 8) return;
event.target.value = valString.length > 8 ?
valString.substr(0, 8) :
(valString.length > 3 ? valString.substr(0, 3) : null);
}<input type="number" />
这将将任何大于8位数的值修剪为8位数,将任何大于3位但小于8位数的值修剪为3位数,并在输入1或2位数字值时留下空白。
https://stackoverflow.com/questions/64483248
复制相似问题