Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 23.08.2017, 17:00
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Capitalist
"если браузер не поддерживает нативной" это прямо условие можно такое задать?
Например, поддержку нативной проверки обязательного заполнения поля можно сделать так:

if(!"required" in document.createElement("input")) {
    //нет поддержки, проверка скриптом
}


Но, например, Apple давно забросил поддержку своего Safari под Windows и хотя этот браузер отвечает, что поддерживается "required", в тоже время с чистой совестью отправит форму и с пустым таким полем. То есть кроме этого нужно еще и браузер, и ОС проверить.

Сообщение от Capitalist
if(!$.trim(this.value)) - как я понимаю если после удаления пробелов в начале и конце строки, строка не пустая = true
Наоборот, это условие вернет true, если строка пустая (false), то есть сообщение - "Заполнить!".

А если нет, обязательное поле заполнено, то проверка согласно условию заполнения. В случае если условие описывается шаблоном рег. выражения (это можно узнать как this.pattern), то конструктором RegExp создаем объект регулярного выражения и проверяем:

var re = new RegExp(this.pattern);
if(!re.this.value)) {
    //значение не соответствует рег. выражению
}


Вот только почему ваш телефон начинается с (XXX), видимо плагин подставляет первую цифру. Если же проверять по pattern, то в нем должен быть описан полный формат номера.
Ответить с цитированием
  #12 (permalink)  
Старый 23.08.2017, 17:55
Новичок на форуме
Отправить личное сообщение для Capitalist Посмотреть профиль Найти все сообщения от Capitalist
 
Регистрация: 22.08.2017
Сообщений: 6

Ух представлял все проще

Цитата:
Наоборот, это условие вернет true, если строка пустая (false), то есть сообщение - "Заполнить!".
А я использую mask jquery, в моем случае строка не может быть никак пустой. по этой причине у меня и встал вопрос валидации изначально. эту проверку можно опустить?

Проверка сафари - как-то так?

var Sb = navigator.userAgent.toLowerCase();
if (Sb.indexOf("safari/") !== -1 &&  
    Sb.indexOf("windows") !== -1 
    ) {
}

Узнал я что сафари, а в случае сафари проверка какаято другая? Даже не представляю

Цитата:
Вот только почему ваш телефон начинается с (XXX), видимо плагин подставляет первую цифру. Если же проверять по pattern, то в нем должен быть описан полный формат номера.
Может пользователь написать, если же он не поставит плагин автоматом поставит 8

pattern="/8\s\([0-9]{3}\)\s\[0-9]{3}-[0-9]{2}-[0-9]{2}/"
Ответить с цитированием
  #13 (permalink)  
Старый 23.08.2017, 18:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

<!DOCTYPE HTML>
<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body>
<form>
<input style="width:300px" required="" pattern="8\s\(\d{3}\)\s\d{3}-\d{2}-\d{2}" placeholder="Используйте формат: 8 (NNN) NNN-NN-NN" />
<button>Send</button>
</form>
</body>
</html>


Попробуйте отправить эту форму с пустым полем или отличным от указанного формата.

Сафари же примет это к сведению, не более. То есть, в браузерах не имеющих нативной проверки ввод будет проверяться скриптом. Тут только надо иметь ввиду - вся проверка на клиенте, это чисто сервис для клиента, серверу же на эту проверку наплевать и растереть. По приему формы сервер обязан проверить эти данные сам. А из этого можно сделать вывод - есть нативная проверка, хорошо, нет и пофиг, не надо никаких скриптов, сервер проверит и вернет ошибки. Если отправка формы асинхронная, то это тем более не в тягость для пользователя.

Хотя это мое мнение, вы поступайте так как считаете нужным.

У вас есть плагин проверки ввода номера, просто прочтите в документации о его методах, а то сдается мне запутаетесь в скриптах и ...

Последний раз редактировалось laimas, 23.08.2017 в 18:20.
Ответить с цитированием
  #14 (permalink)  
Старый 23.08.2017, 18:37
Новичок на форуме
Отправить личное сообщение для Capitalist Посмотреть профиль Найти все сообщения от Capitalist
 
Регистрация: 22.08.2017
Сообщений: 6

да, я понял что вы хотели до меня донести, на сайте у меня точно также сейчас форма выглядит.
в скриптах конечно я уже запутался но попытаюсь распутаться

я изначально может не так понял
должно быть так: если отсутствует нативная проверка ИЛИ браузер сафари и ос windows, то выпаолняем скрипт.... ? никакого отдельного скрипта для сафари не пишется? (если пишется то не стоит объяснять, не пойму)
если не пишется, то проверка сафари будет примерно методом как я указал в предыдущем посте?
Ответить с цитированием
  #15 (permalink)  
Старый 23.08.2017, 18:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Capitalist
должно быть так: если отсутствует нативная проверка ИЛИ браузер сафари и ос windows, то выпаолняем скрипт.... ?
Да.

Сообщение от Capitalist
икакого отдельного скрипта для сафари не пишется?
Да, то есть все браузеры "инвалиды" и Safari for Widows будут проверяться одним js-сценарием.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Варианты форматирования номера телефона AlexTrader Общие вопросы Javascript 15 03.08.2017 15:00
Выбор номера телефона через select и кнопка позвонить Exhaust_ Элементы интерфейса 11 08.08.2016 22:35
Проверка поля номера телефона iskander83 Общие вопросы Javascript 2 14.05.2013 15:22
Проверка номера телефона VetalMan23 Общие вопросы Javascript 14 27.11.2012 12:42
Проверка номера телефона при помощи регулярок Amateur Javascript под браузер 3 20.10.2011 13:34