Как это часто бывает разработчики разделились на два лагеря – те, кто любит петрушку и те кто ее ненавидит. И действительно с одной стороны удобный инструмент, призванный облегчить жизнь веб-разработчику особенно фронтендеру, с другой стороны иногда натыкаешься на такие грабли, что долго и мучительно вынужден искать решение. И ни документация, ни комьюнити стаковерфлоу или гитхабовцы не могут помочь решить проблему.
Некоторое время назад столкнулся с казалось бы тривиальной задачей – сравнить пароли при регистрации пользователя и в случае ошибки выдать пользователю соответствующее сообщение. Так уж получилось что раньше для этого дела я использовал самописный jQuery, но в данном проекте во что бы то ни стало нужно было задействовать Parsley validator. В документации было четко обозначено что для сравнения полей можно использовать
1 |
data-parsley-equalto="#anotherfield" |
где anotherfield – это id первого запроса ввода пароля. Нет ничего проще подумал я и сделал согласно документаци.
1 2 |
<input type="password" class="form-control" name="password" id="password" value="" minlength="8" required> <input type="password" class="form-control" name="password2" id="password2" value="" data-parsley-equalto="#password"> |
Однако все работало корректно кроме сравнения паролей. Стало быть parsley отрабатывал, значит проблема была или в синтаксисе при сравнении паролей либо из-за каких-то внешних воздействий (конфликта с другими скриптами).
Два часа угробил на поиски проблемы, перегуглил кучу материала. То и дело натыкался на аналогичную проблемы других разработчиков, но все решения что предлагались это были в основном костыли в виде дописанных скриптов или советы по пересмотру синтаксиса, причем не всегда корректные. В общем-то с костылем проблема решалась, но это не наш метод и нужно было разобраться почему сделав все согласно документации оно не работает. Утро вечера мудренее.
Утром со свежей головой отправился снова в гугл. Наткнулся на ветку в оверфлоу, где пользователь описывает идентичную моей проблему. Никакого решения там не предлагалось. У того разработчика кроме парсли валидатора был еще один скрипт на странице, который использовал старую библиотеку jQuery, еще версии 2.0. У меня было нечто похожее. Другой скрипт, но тоже со старой библиотекой. Все что нужно было сделать это заменить версию jQuery с 2 на 3. Думаю кому-то может пригодиться. Удачи.
No Comments