Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как сделать чтобы значенрие input состояло только из определенного количества цифр? (https://javascript.ru/forum/dom-window/77865-kak-sdelat-chtoby-znachenrie-input-sostoyalo-tolko-iz-opredelennogo-kolichestva-cifr.html)

s24344 27.06.2019 09:07

Как сделать чтобы значенрие input состояло только из определенного количества цифр?
 
Всем привет, подскажите, пожалуйста как сделать чтобы значение input состояло только из определенного количества цифр (в моем случае тринадцать)?
value должен состоять ровно из 13 цифр. UI не должен давать вводить что-то отличное от цифр.
Необходима валидация именно не javascript.

рони 27.06.2019 11:04

Цитата:

Сообщение от s24344
Необходима валидация именно не javascript.

:-?

NiOl 27.06.2019 13:15

Тут 2 пути, и оба со своими плюсами и минусами:
1. Дать ввести человеку что угодно, и onchage проверять введеное, если не нравиться - заставить человека исправить данные. Это самый простой путь.
2. Создать полностью свой элемент input, где будете перехватывать все обращения к клавиатуре и мышке и тачу и еще неизвестным hid, и создавать таким образом свой собственный редактор строки. Это очень громоздко, но будет работать именно так, как Вам нужно.

Так что с учетом затрат, определитесь в необходимом и достаточном конечном результате. ;)

laimas 27.06.2019 16:35

Для поля maxlength="13" и установить обработчик для oninput, где удалять не цифровой ввод.

Dilettante_Pro 27.06.2019 17:42

<input id="inp">
<input placeholder= "next field">
<script>
   inp.oninput = function() {
       this.value = this.value.replace(/\D/g,'').substr(0,13);
   }
   document.oninput= function() {
           if(inp.value.length < 13) inp.focus();
   }
</script>

Malleys 28.06.2019 00:06

Цитата:

Сообщение от NiOl
1. Дать ввести человеку что угодно, и onchange проверять введённое, если не нравиться - заставить человека исправить данные. Это самый простой путь.
2. Создать полностью свой элемент input, где будете перехватывать все обращения к клавиатуре и мышке и тачу и еще неизвестным hid, и создавать таким образом свой собственный редактор строки. Это очень громоздко, но будет работать именно так, как Вам нужно.

NiOl, вам нужно изучить событие input

Цитата:

Сообщение от s24344
Всем привет, подскажите, пожалуйста как сделать чтобы значение input состояло только из определенного количества цифр (в моем случае тринадцать)?

Если вам нужны натуральные числа от 1 000 000 000 000 до 9 999 999 999 999, то можно сделать при помощи, например, поля для ввода чисел!
<style>
:invalid {
	color: red;
}
</style>
<input type="number" min="1000000000000" max="9999999999999" step="1">


Или например, при помощи текстового поля, если вам нужны нули в старших разрядах числа, чтобы его дополнить до 13-ти значного, которое проходит проверку только тогда, когда введено такое 13-значное число!
<style>
:invalid {
	color: red;
}
</style>
<input pattern="\d{13}">


Цитата:

Сообщение от s24344
UI не должен давать вводить что-то отличное от цифр.
Такая проверка необходима именно на javascript.

Расширим последний пример...
<style>
:invalid {
	color: red;
}
</style>
<input pattern="\d{13}" maxlength="13" oninput="this.value=this.value.replace(/\D/g,'')">

s24344 28.06.2019 08:04

Всем большое спасибо.


Часовой пояс GMT +3, время: 08:32.