#javascript #html
#javascript #HTML
Вопрос:
здравствуйте, я пытаюсь реализовать текстовое поле для сбора 4-символьных pin-кодов от 1 до 9
Мне удалось добиться ограничения ввода 4 символами и только цифрами
но у меня возникают проблемы, ограничивающие использование «0» в этом текстовом поле
пожалуйста, помогите
смотрите мой код ниже, в котором я пытался установить ограничение, используя атрибуты min и max
<input id="pin" required name="pin" oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);"
type = "number"
maxlength = "4" min="1" max="4" placeholder="Pin Code">
Комментарии:
1. В чем проблема, с которой вы сталкиваетесь с нулями? Я могу представить себе несколько возможностей, но это пустая трата времени, когда вы можете просто рассказать нам.
2. вы хотите вводить только числа от 1 до 9?
Ответ №1:
<input id="pin"
required
name="pin"
type="text"
maxlength="4"
onkeypress='return event.charCode >= 49 amp;amp; event.charCode <= 57'
placeholder="Pin Code"
/>
@chap man просто используйте этот код, и все готово. Он просто проверяет, находится ли код ASCII входного символа в диапазоне [49,57], который является диапазоном кодов ASCII для чисел от 1 до 9
Ответ №2:
Это пример использования регулярных выражений
HTML
<input id="pin" name="pin" placeholder="Pin Code">
jQuery
$('#pin').on('input', function(){
var thisRegex = new RegExp("^[1-4]{4}$");
if(!thisRegex.test($(this).val()))
{
alert('fail');
}
else
alert('Good');
})
Ответ №3:
См. Изменение значения границы green
, когда значение имеет длину 4 цифры. Оператор if проверяет регулярным выражением только значения от 1 до 9 и длиной в 4 цифры.
var pinInputElement = document.querySelector('#pin');
pinInputElement.addEventListener('input', function(){
if(/^[1-9]{4}$/.exec(this.value)) {
this.classList.add('success');
} else {
this.classList.remove('success');
}
});
#pin {
width: 100px;
border-width: 5px;
border-color: orange;
}
#pin.success {
border-color: green;
}
<input id="pin" required name="pin" type="number"
maxlength="4" min="1" max="4" placeholder="Pin Code">
Ответ №4:
Вы также можете использовать replaceAll()
для замены всех нулей пустой строкой.
Вот мой полный рабочий пример:
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
function checkPin() {
let pinInput = document.getElementById("pin");
let value = pin.value;
let maxLength = pin.maxLength;
pinInput.value = value.replaceAll("0", "");
if (value.length > maxLength) {
pinInput.value = value.slice(0, maxLength);
}
}
</script>
</head>
<body>
<input id="pin" required name="pin" oninput="checkPin()"
type = "number"
maxlength = "4" min="1" max="4" placeholder="Pin Code">
</body>
</html>