Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доработка плагина Masked Input Plugin 
:(
    Опции темы
maxipub
Дата 5.7.2016, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Добрый день!

Есть такой себе неплохой сабж - http://digitalbush.com/projects/masked-input-plugin/

Я использую его в HTML-форме для форматирования ввода телефона. Форматирование, понятное дело, выполняется и на стороне сервера. В данном случае оно нам нужно для того, чтоб сразу визуально дать понять человеку что поле для номера телефона, с минимум текстовых описаний к нему. На самом сайте по ссылке демки не слишком удачные, когда задаешь маску вида "+7 (999) 999-99-99", человеку сразу становится все понятно.

А вот что мне категорически не нравится в этом плагине - это очистка поля (например, при потере фокуса) если введенная там информация не соответствует шаблону (например, посетитель не дописал номер телефона). Насколько я разобрался, делается это в данном участке кода:

Код
return allow ? writeBuffer() : partialPosition > lastMatch + 1 ? settings.autoclear || buffer.join("") === defaultBuffer ? (input.val() && input.val(""), 
clearBuffer(0, len)) : writeBuffer() : (writeBuffer(), input.val(input.val().substring(0, lastMatch + 1))), 
partialPosition ? i : firstNonMaskPos;


А именно:

Код
input.val() && input.val(""), 
clearBuffer(0, len)


Но что это за код и как его править - ??? smile smile Внешне очень похож на тернарный оператор, но какой-то странный. Прежде всего, запятые в нем - это вообще что такое? Первый раз такой встречаю. Переписал чуть более (по крайней мере для меня) удобочитаемо:

Код
return
    allow ? 
        writeBuffer() : 
        partialPosition > lastMatch + 1 ? 
            settings.autoclear || buffer.join("") === defaultBuffer ? 
                (input.val() && input.val(""), clearBuffer(0, len)) : 
                writeBuffer() :
            (writeBuffer(), input.val(input.val().substring(0, lastMatch + 1))), partialPosition ? 
                i :
                firstNonMaskPos;


Похоже оно. Искал про запятую. Оказывается есть такой оператор, который "вычисляет оба операнда и возвращает значение второго". Запутался только больше. Непонятно, зачем ребята такое намудрили, чтоб сэкономить пару символов, которые потом все равно уберет минимизатор?

В JS не сильно разбираюсь, возможно, кто-то с таким сталкивался, как тут быть? В функции clearBuffer цикл, она ничего не возвращает. Может не парить себе мозг и просто вместо:

Код
(input.val() && input.val(""), clearBuffer(0, len))


Прописать:

Код
(undefined)


???
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0596 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.