Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите напить простое условие (https://javascript.ru/forum/misc/54185-pomogite-napit-prostoe-uslovie.html)

Sergey_Koval 07.03.2015 15:28

Помогите написать простое условие для поля input
 
Есть форма в которой input с маской
$("#form1tel").mask("+7 ( 999 ) 999 - 99 - 99");
если при отправки номер введен не весь то он просто сбрасывается!

Нужно что бы при отправке номер проверялся,если он веден не полностью,то поле не сбрасывается и появляется сообщение вроде "Введите корректно номер")
Помогите плз!

laimas 07.03.2015 16:07

.mask() - это что за метод? Плагин какой-то используется?

Sergey_Koval 07.03.2015 16:16

Цитата:

Сообщение от laimas (Сообщение 360016)
.mask() - это что за метод? Плагин какой-то используется?

Да это плагин)

laimas 07.03.2015 16:18

И что он не может проверить корректен ли ввод? Что же он тога делает?

Sergey_Koval 07.03.2015 16:28

Возможно и может но как я не знаю

laimas 07.03.2015 16:45

Значит надо открывать документацию плагина и читать о его методах, а иначе для чего он у вас, для красоты? Вот без скриптов и плагинов, работа HTML5, тоже проверка номера по вашему шаблону (пробелы только излишние убраны). Попробуйте отправить неполный номер:
<form>
    <input required="" pattern="^\+7\s\(\d{3}\)\s\d{3}-\d{2}-\d{2}$" />
    <button>Send</button>
</form>


Тоже самое и плагин вами подключенный должен выполнять.

Sergey_Koval 07.03.2015 16:53

Вложений: 1
Это да,но мне нужна вот такая маска,именно ее мне дает плагин

laimas 07.03.2015 17:06

Да пожалуйста:

<input required="" pattern="^\+7\s\(456\)\s\d{3}-\d{2}-\d{2}$" />

Нужно что бы при отправке номер проверялся,если он веден не полностью

Не полностью, это означает не все его составляющие, а не ввели 999 вместо 456. Так что у вас за проблемы на самом деле?

Sergey_Koval 07.03.2015 17:17

http://koval0.pe.hu/rar2/index.html

Вот мой сайт,справа форма первый input сделал как вы мне сказали
а второй как должно быть,только она сбразывается

hhh 07.03.2015 17:20

Я в таких случаях вешаю дополнительную валидацию,
вот эту вот люблю https://github.com/posabsolute/jQuery-Validation-Engine
если надо у меня есть минимизированный скрипт

laimas 07.03.2015 17:24

мне нужна вот такая маска +7 (456)

Однако в подсказке о 456 и намека нет. Ну ладно, бог с ним.

^\+7\s\(456\)\s\d{3}-\d{2}-\d{2}$ - это паттерн, по которому браузер с поддержкой HTML5 сам проверит корректность ввода, а не для того, чтобы вы это вставляли как параметр для плагина, я понятия не имею каким образом ему надо задавать параметры. Читайте документацию его.

рони 07.03.2015 20:49

Валидация формы и маска для телефона
 
Sergey_Koval,
вариант :write:
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .error{
    display: none;
    color: #FF3300;
     margin: 0 5px;
  }

  </style>
</head>

<body>
<form action="http://javascript.ru/forum/" class="form">
<input size="21" class="tel"><p class="error"></p>

<input type="submit" value=" OK ">
</form>
<script>
var tel = document.querySelector('.tel'),
    err = document.querySelector(".error"),
    form = document.querySelector(".form");

function setCursorPosition(pos, elem) {
    elem.focus();
    elem.setSelectionRange(pos, pos);
}

function proverka(el) {
    err.style.display = "none";
    var matrix = "+7 ( 456 ) 999 - 99 - 99",
        i = 0,
        val = el.value.replace(/\D/g, '');
    val.length < 4 && (val = "7456");
    matrix = matrix.replace(/\d/g, function(a) {
        return val.charAt(i++) || "_"
    });
    el.value = matrix;
    i = matrix.lastIndexOf(val.substr(-1));
    i < matrix.length && i > 7 ? i++ : (i = 11)
    setCursorPosition(i, el)
    return i == matrix.length
};

tel.oninput = tel.onfocus =function() {
    proverka(tel);
}
tel.onfocus = function() {
    setCursorPosition(11, tel);
}

tel.oninput();

function validate() {
    err.style.display = "none";
    var ok = proverka(tel);
    !ok && (err.style.display = "inline-block", err.innerHTML = "Введите корректно номер");
    return ok
}
document.forms[0].onsubmit = validate
</script>
</body>

</html>


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