jQuery(function($) - это уже объявлено в коде, $(function(), повторений не надо.
Это $.mask.definitions['~']='[+-]'; $('#phone').mask('(999) 999-9999'); убрать, а шаблон /^(?:\+7|8)[\s|-]*[\(]?\d{3}?[\)]?[\s|-]*\d{3}[\s|-]*\d{2}[\s|-]*\d{2}$/ заменить на /^\(\d{3}\)\s{1}\d{3}-\d{3}$/ PS. Или вы используете плагин, который форматирует ввод номера? |
laimas,
Хотела чтобы у поля телефона была такая вот подсказка +38 (___) ___ __ __ , которая не исчезает после клика по заполняемому полю. И да, прочитала информацию про плагин Masked Input и захотелось его применить) |
Ну тогда применяйте плагин здесь:
$(function() { $.mask.definitions['~']='[+-]'; $('#phone').mask('(999) 999-9999'); $('#formcheck').submit(function() .... а шаблон проверки телефона должен быть таким: /^\+38\s{1}\(\d{3}\)\s{1}\d{3}-\d{3}$/ |
laimas,Исправила, но не работает. Может много скриптов подключила? Или ошибка где-то, не могу найти.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="jquery.maskedinput.js"></script> <script src="script.js"></script> <script scr="jquery-3.1.1.js"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> <script> $(function () { $.mask.definitions['~'] = '[+-]'; $('#phone').mask('(999) 999-9999'); $('#formcheck').submit(function () { var err = [] , p = [ [/[а-яёА-ЯЁ]{2,12}/, 'Ввод имени некорректный'], [/^\+38\s{1}\(\d{3}\)\s{1}\d{3}-\d{3}$/, 'Ввод телефона некорректный'], [/^[a-z0-9_\.\-]+@[a-z0-9_\.\-]+\.[a-z\.]{2,6}$/, 'Ввод электронного адреса некорректный'] ]; $(this).find('input').each(function (i, e) { var v = $.trim(e.value); if (!v || !(p[i][0]).test(v)) err.push(p[i][1]) }) if (err.length) { alert(err.join('\n')); return false; } }) }); </script> |
Цитата:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script src="jquery.maskedinput.js"></script> <script src="script.js"></script> PS. Если плагин maskedinput.js требует конкретной версии (не ниже какой-то), то подключайте таковую. |
А как сделать так, чтобы вместо отдельного сообщения уведомление об ошибке выводилось возле каждого поля формы? Это вместо p нужно присвоить объект? Как это сделать?
|
Цитата:
$(this).find('input').slice(0, -1).each(function(i, e) { ..... либо получать поля ввода типа text, указав соответствующим полям этот тип: $(this).find('input[type="text"]').each(function(i, e) { ..... Эта переменная описывает правила проверки (шаблоны) и тексты сообщений об ошибках. Но ведь если поставлено задание посредством JQ, и если без использования pattern, то значит и required, и placeholder не должны применяться по идее. А значит проверку поля нужно производить раздельно: 1) поле заполнено?; 2) поле заполнено корректно?, а переменная p должна еще содержать для каждого поля сообщения об обязательном заполнении поля, и также текст подсказки что разрешено вводить в него. А вывод этих сообщений у поля делается посредством скрипта с использованием слоя с абсолютным позиционированием, которое (и не только) описывается css-правилами. При этом подсказка для поля может выводиться при получении полем фокуса и если оно не заполнено и по истечении времени закрываться сама. А сообщения об ошибках естественно при их наличии. |
K_arina, зачем паттерны с подсказками в каком-то массиве? Запиши их прямо в атрибуты полей и проверяй поле за полем на высоком уровне абстракции.
|
Цитата:
Это если захотеть браузерную валидацию, а она недоделана и вообще мутная. То есть берем var p=el.getAttribute('pattern'); и юзаем в своем скрипте и стопудово в Сафари оно сработает. Аналогично с required и в этот атрибут еще можно записать min-length если в паттерне нету. |
Вот тут сделано так было http://javascript.ru/forum/dom-windo...tml#post431819 и вот как надо было продолжить
<form id="feedback" method="post"> <input name="name" required="required" pattern="[а-яёА-ЯЁ]{2,12}" e="Соблюдайте формат имени: от 2 до 12 русских букаф" /> <input name="phone" required="required" pattern="^(?:\+7|8)[\s|-]*[\(]?\d{3}?[\)]?[\s|-]*\d{3}[\s|-]*\d{2}[\s|-]*\d{2}$" e="Неправильно набран номер, неправильно набран номер, бип-бип-бип" /> <input name="email" type="email" required="required" pattern="^[a-z0-9_\.\-]+@[a-z0-9_\.\-]+\.[a-z\.]{2,6}$" e="Соблюдайте формат имейл: some@example.com" /> </form> Теперь написать скрипт в несколько строк дело нескольких минут, поскольку все самоочевидно. |
Часовой пояс GMT +3, время: 20:36. |