Поле для телефона
Здравствуйте! Подскажите, пожалуйста, поле для телефона я сделал так:
<input type="text" name="tel" id="tel" maxlength="12" placeholder="+7 (ххх) ххх хх хх" pattern="^\+7\d{10}$" onkeyup="this.value = this.value.replace (/[^0-9+]/, '')"> А как если убрать Код:
maxlength="12" Код:
onkeyup="this.value = this.value.replace (/[^0-9+]/, '')" И скажите, пожалуйста, можно ли сделать как то так, чтобы при фокусе +7 уже добавлялся без возможности его стереть, а при наборе номера автоматически подставлялись пробелы и скобки. Мне нужно, чтобы получалась вот такая комбинация: +7 (ххх) ххх хх хх Помогите, пожалуйста. Очень вам благодарен! |
LADYX,
готовые плагины есть и их описание. |
laimas,
здравствуйте! Да, я знаю, но мне не хотелось бы устанавливать целый плагин. |
Цитата:
|
Цитата:
LADYX, вот делал как-то маску для времени. Можно модифицировать под свои нужды. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Inputmask light</title> </head> <body> <input id="input_time" type="text"> <label for="input_time">Время</label> <script> var inputMask = function (d, s1, s2) { var el = d.querySelector(s1); if (!el) return; mask(el, '__:__:__', d.querySelector(s2)); function mask(node, mask, placeholder) { node.addEventListener('mouseenter', switchTypeEvent); node.addEventListener('mouseleave', switchTypeEvent); node.addEventListener('click', switchTypeEvent); node.addEventListener('keydown', switchTypeEvent); node.addEventListener('blur', switchTypeEvent); function switchTypeEvent(e) { switch(e.type) { case 'mouseenter': hangMask(node, mask, true); break; case 'mouseleave': hangMask(node, mask, false); break; case 'blur': hangMask(node, mask, false); break; case 'click': var indx = getFirstUnderscoreIndx(node); setCaretPosition(node, indx); break; case 'keydown': var valid_code = validate(e); if (valid_code && valid_code !== 8 && valid_code !== 9 && valid_code !== 13 && valid_code !== 17 && valid_code !== 116 && valid_code !== 37 && valid_code !== 39) { e.preventDefault(); replaceFirstUnderscore(node, e); } else if (valid_code && valid_code === 8) { e.preventDefault(); replaceNumberToUnderscore(node, e); } else if (valid_code && (valid_code === 9 || valid_code === 13 || valid_code === 116 || valid_code === 37 || valid_code === 39)) { } else if (valid_code && valid_code === 17) { node.blur(); } else { e.preventDefault(); } break; default: } } function hangMask(element, value, state) { if (!element.value && state) { element.value = value; visiblePlaceholder('none'); } else if (element.value === value && !state && (!isFocused() || isFocused() !== element.id)) { element.value = ''; visiblePlaceholder('block'); } function isFocused() { return d.activeElement.id; } function visiblePlaceholder(state) { if (placeholder) placeholder.style.display = state; } } function setCaretPosition(element, n) { if (n < 0) return; element.selectionEnd = n; } function getFirstUnderscoreIndx(element) { return element.value.search(/_/); } function validate(e) { if ((e.keyCode < 48 && e.keyCode !== 8 && e.keyCode !== 9 && e.keyCode !== 13 && e.keyCode !== 17 && e.keyCode !== 37 && e.keyCode !== 39) || e.keyCode > 57 && e.keyCode !== 116) { return false; } return e.keyCode; } function replaceFirstUnderscore(element, e) { var number = e.key; var val = element.value; element.value = val.replace(/_/, number); var indx = getFirstUnderscoreIndx(element); setCaretPosition(element, indx); } function replaceNumberToUnderscore(element, e) { var val = element.value; var caret_index = getCaretPosition(element); var symbol_index = getSymbolIndex(val, element, caret_index); var new_mask = cutMask(element, symbol_index); if (new_mask) { element.value = new_mask; var indx = getFirstUnderscoreIndx(element); setCaretPosition(element, indx); } function cutMask(el, n) { if (n < 0) return false; var cut1 = el.value.substring(0, n); var cut2 = el.value.substring(n + 1); return cut1 + '_' + cut2; } function getSymbolIndex(val, el, indx) { var n = --indx; if (val[n] === ':' || val[n] === '-') { setCaretPosition(el, n); return --n; } return n; } function getCaretPosition(el) { return el.selectionEnd; } } } } inputMask(document, '#input_time', 'label[for="input_time"]'); </script> </body> </html> |
LADYX,
Маска для телефона на js |
рони,
здравствуйте! Да, спасибо за ссылку. Некоторые моменты в этом скрипте мне не совсем подходят. Задам вопрос в той теме. |
Часовой пояс GMT +3, время: 02:05. |