Плавное появление полей в Webform, которые появляются при выполнении условия

Главные вкладки

Аватар пользователя Quty Quty 15 января 2014 в 2:45

Здравствуйте.
Использую модуль Webform. При работе с формами можно установить условия, которые реагируют на содержимое других полей и показывают эти поля или не показывают, в зависимости от условия. Если условие выполнено не при загрузке страницы, а в процессе заполнения формы пользователем, то поле для которого было назначено условие появляется (меняется с display:none на display:block) прямо в процессе заполнения. Такое резкое появление иногда пугает и путает пользователей.

Подскажите, пожалуйста, как улучшить этот процесс, а именно мне нужно чтобы такие поля при выполнении условия в процессе заполнения появлялись плавно (slideToggle или fadeIn), чтобы пользователь успевал отследить, что произошло вообще, а то иногда это затруднительно.

Просмотрел стандартный js файл модуля webform - webform.js. Но там ничего нет на тему условий. Видно это где то в другом месте прописывается. Подскажите, пожалуйста, где именно и как лучше выполнить задачу.

Заранее благодарен любой помощи.

Комментарии

Аватар пользователя grob.82 grob.82 15 января 2014 в 7:39

"Quty" wrote:
появлялись плавно (slideToggle или fadeIn)

сам же ответил
напиши js типа

$(.block-select).click(){
$(.block-hidden).fadeIn( 500 );
}

Аватар пользователя Quty Quty 15 января 2014 в 13:18

grob.82 wrote:
"Quty" wrote:
появлялись плавно (slideToggle или fadeIn)

сам же ответил
напиши js типа

$(.block-select).click(){
$(.block-hidden).fadeIn( 500 );
}

А как именно применить JS? Ведь здесь нет события click или change. Я просто заполняю какое то поле и если в зависимом поле выполняется условие, то оно появляется. Это появление и нужно заменить на плавное. А подключать скрипт К КАЖДОМУ полю, разбирая его на наличие выполнения условия скриптом - не вариант, так как полей с условием могут быть десятки и у каждого разные условия.

Мне просто нужно узнать где лежит скрипт, который отвечает за стандартную смену с display:none на display:block.

Аватар пользователя Quty Quty 15 января 2014 в 13:19

vortex wrote:
а css?

-webkit-transition: all 0.3s ease-out;
-moz-transition: all 0.3s ease-out;
-o-transition: all 0.3s ease-out;
transition: all 0.3s ease-out;


Та же самая проблема.
Анимация то должна происходить при выполнении условия, а не просто при загрузке страницы.

Аватар пользователя vortex vortex 15 января 2014 в 19:53

Транзишен страбатывает при появлении элемента или изменении его. Если поле заранее не подгружается, а появляется по событию, то должно сработать.

Но с учетом вашей проблемы нужен уж очень хороший селектор для этих полей, что бы не прописывать каждое в отдельности.

Аватар пользователя Oltas Oltas 22 мая 2018 в 12:57

В файле sites/all/modules/webform/js/webform.js добавить длительность анимации в функции .show(); (у меня строка 222) и .hide() (строка 227). Например так: show(400); .hide(400);
Решение так себе, так как после обновления модуля все вернется к скачкообразности и нужно снова править файл... но как сделать хук - ума не приложу...