Перейти к содержимому


Показ/скрытие полей через JavaScript


Сообщений в теме: 333

#141 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 27 Июнь 2014 - 10:41

Готовый код вам никто не напишет - это платная услуга. На форуме только консультации и обсуждения. Примеров полно, пишите, пробуйте, не получается - выкладываете свой код, вам объяснят что не так.

#142 Alexbalamyt

    Новичок

  • Пользователи
  • Pip
  • 7 сообщений

Отправлено 27 Июнь 2014 - 13:54

С прошлым вопросом разобрался =)

Другой вопрос, выводить поле по условиям 2-х полей можно ?

(поле №1370) Цель : арендовать (дл) ; арендовать (сут) ; покупка
(поле №1450) Объект : квартира, офис
(поле №1490) Кто будет жить : семья, семья+ребенок. (его надо выводить при условии Арендовать и Квартира)

Делаю проверку в поле Объект, (весь код ниже написан в поле Объект) сразу по объекту и цели, как-то не работает.

function onchange_{$one_field.id}()
{
  display_field
		  ((1490, document.getElementById('value{$one_field.id}').value=="Квартира" || document.getElementById('value{$one_field.id}').value=="Дом"))  \\ вывести поле 1490 если в Объекте выбрано Квартира или Дом
		  && ((1460, document.getElementById('value1370').value=="Арендовать (дл)" (1460, document.getElementById('value1370').value=="Арендовать (сут));  \\ и вывести поле 1490 если в Цели выбрано Аренда дл или Аренда посут.
  display_field(1470, document.getElementById('value{$one_field.id}').value=="Офис" || document.getElementById('value{$one_field.id}').value=="Склад");  \\ вывести поле 1470 (площадь) если в объекте выбрано Офис или Склад.
}
addHandler(document.getElementById('value{$one_field.id}'), 'onchange', onchange_{$one_field.id});

Подскажите что не так ? Поля на которые ссылаюсь, в них вообще кода НЕТ. Без условия "И" оно работает. Может где-то в другом месте проверку делать ?

Сообщение отредактировал CbCoder: 27 Июнь 2014 - 14:55


#143 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 27 Июнь 2014 - 14:57

У вас в коде полно синтаксических ошибок: во-первых, пропущена кавычка после Арендовать (сут), что сразу видно, если включить подсветку кода (см. выше свое сообщение, я ее включил). Во-вторых, полный кавардак со скобками. Рекомендую использовать редактор с подсветкой кода, например Notepad++, 90% подобных проблем отсеете. Наконец, в третьих, зачем-то в условиях продублирован номер поля, что вообще полный бред с точки зрения синтаксиса, как функции display_field, так и вообще любого логического выражения.

Пример с исправлением вышеперечисленных ошибок:

function onchange_{$one_field.id}()
{
  display_field(1490,  \\ вывести поле 1490
			 ((document.getElementById('value{$one_field.id}').value=="Квартира" || document.getElementById('value{$one_field.id}').value=="Дом")  \\ если в Объекте выбрано Квартира или Дом
		   && (document.getElementById('value1370').value=="Арендовать (дл)" || document.getElementById('value1370').value=="Арендовать (сут)"));  \\ и если в Цели выбрано Аренда дл или Аренда посут.
  display_field(1470, document.getElementById('value{$one_field.id}').value=="Офис" || document.getElementById('value{$one_field.id}').value=="Склад");  \\ вывести поле 1470 если в объекте выбрано Офис или Склад.
}
addHandler(document.getElementById('value{$one_field.id}'), 'onchange', onchange_{$one_field.id});


#144 Alexbalamyt

    Новичок

  • Пользователи
  • Pip
  • 7 сообщений

Отправлено 27 Июнь 2014 - 21:17

отлично, спасибо работает. Только скобочку в конце добавил, для закрытия выражения : " display_field(1490, "

Теперь возникла проблема : все поля которые должны появляться\скрываться от выбора. Они все в начале открыты (как только сделали Добавить запись, еще ничего не выбирали)

Можно их как-то убрать и вызывать только по запросу ?
Простой код скрытия перед основным выражением условий показа, результата не дает.

Простой код скрытия
display_field(1460, 0); // отключаем видимость поля кол-во комнат
display_field(1470, 0); // отключаем видимсоть поля площадь
display_field(1490, 0); // отключаем видимость поля кто будет жить

Сообщение отредактировал Alexbalamyt: 27 Июнь 2014 - 21:35


#145 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 28 Июнь 2014 - 13:47

Естественно, они будут открыты, т.к. функция onchange_{$one_field.id} в вашем коде вызывается только при событии изменения поля Объект. Самой простой вариант тут - добавить вызов этой функции и при загрузке страницы:

$(onchange_{$one_field.id});

Добавьте эту строку в конец кода.

#146 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 28 Июнь 2014 - 13:57

Сразу тогда выскажу и замечания по вашим словам:

Цитата

Простой код скрытия
display_field(1460, 0); // отключаем видимость поля кол-во комнат
display_field(1470, 0); // отключаем видимсоть поля площадь
display_field(1490, 0); // отключаем видимость поля кто будет жить

Во-первых, этот код будет актуален только в случае новой записи (т.к. скрывает всё в любом случае), а для уже заполненных записей с выбранным объектом, приведет к тому, что поля скроются также все, хотя в этом случае часть или все поля должны быть показаны в зависимости от значения в поле Объект. Т.е. должна быть такая же проверка как при непосредственно выборе объекта, а у вас это не учитано (в моем же примере запускается та же самая функция на проверку). Во-вторых, данные команды должны быть вызваны уже после загрузки страницы, для чего и служит jQuery-команда $(имя функции), а простая вставка может и не сработать (т.к. сами поля могут быть еще не загружены в момент работы скрипта).

#147 TelecomMedia

    Активный участник

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 30 Июнь 2014 - 14:24

Подскажите, пожалуйста, где может быть ошибка?

if ((document.getElementById("value10241").value != "" or document.getElementById("value10241").value != "Базовый прайс")) { alert ("КП уже отправлено!"); return false; }
else return true;

Без условия "or" все работает корректно

#148 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 30 Июнь 2014 - 14:52

Ошибка в том, что or в Javascript не используется, нет там такой конструкции. Аналогичную роль там играет || (две вертикальные черты). Пруф

#149 GoGPS

    Активный участник

  • Пользователи
  • PipPipPip
  • 159 сообщений
  • Пол:Мужчина

Отправлено 02 Июль 2014 - 13:28

Здравствуйте,

прочитал ветку, ответа не нашел.

Есть ли возможность скрывать/показывать название группы?

#150 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 02 Июль 2014 - 13:59

Плохо смотрели значит: http://clientbase.ru...findpost&p=9211

#151 GoGPS

    Активный участник

  • Пользователи
  • PipPipPip
  • 159 сообщений
  • Пол:Мужчина

Отправлено 02 Июль 2014 - 14:07

Ув. CbCoder, я предвидел что Вы ткнете меня носом в какой либо пост :)

Но я спросил как скрыть/показать именно название группы, а не саму группу...

#152 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 02 Июль 2014 - 14:14

Просмотр сообщенияGoGPS (02 Июль 2014 - 14:07) писал:

Ув. CbCoder, я предвидел что Вы ткнете меня носом в какой либо пост :)

Да, это мой любимый вариант ответа.

Просмотр сообщенияGoGPS (02 Июль 2014 - 14:07) писал:

Но я спросил как скрыть/показать именно название группы, а не саму группу...

Отдельной функции для этого нет, используйте стандартное скрытие через display="none" элемента. Id элемента можно в исходном коде страницы посмотреть.

Правда, не совсем понимаю, в чем практический смысл данного действия.

#153 GoGPS

    Активный участник

  • Пользователи
  • PipPipPip
  • 159 сообщений
  • Пол:Мужчина

Отправлено 02 Июль 2014 - 14:33

Просмотр сообщенияCbCoder (02 Июль 2014 - 14:14) писал:

Правда, не совсем понимаю, в чем практический смысл данного действия.
Проблема в том что, при нажатии на "Добавить запись" появляется страница, на которой все поля группы скрыты (пока не будет выбрано условие при котором поля входящие в группу будут показываться), но название самой группы видно...

#154 GoGPS

    Активный участник

  • Пользователи
  • PipPipPip
  • 159 сообщений
  • Пол:Мужчина

Отправлено 02 Июль 2014 - 14:52

Просмотр сообщенияCbCoder (02 Июль 2014 - 14:14) писал:

Отдельной функции для этого нет, используйте стандартное скрытие через display="none" элемента. Id элемента можно в исходном коде страницы посмотреть.

А как правильно написать код если ид группы: 450

Заранее спасибо!

Сообщение отредактировал GoGPS: 02 Июль 2014 - 14:52


#155 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 02 Июль 2014 - 15:08

Просмотр сообщенияGoGPS (02 Июль 2014 - 14:52) писал:

А как правильно написать код если ид группы: 450

Я же говорю: смотрите исходный код страницы, я сам не помню как там id элемента выглядит.

#156 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 02 Июль 2014 - 15:11

Просмотр сообщенияGoGPS (02 Июль 2014 - 14:33) писал:

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

Так скрывайте группу целиком через display_fgroup, в чем проблема тогда? Если поля все равно не видны, разницы никакой нет между этими действиями.

#157 GoGPS

    Активный участник

  • Пользователи
  • PipPipPip
  • 159 сообщений
  • Пол:Мужчина

Отправлено 02 Июль 2014 - 15:19

Просмотр сообщенияCbCoder (02 Июль 2014 - 15:11) писал:

Так скрывайте группу целиком через display_fgroup, в чем проблема тогда? Если поля все равно не видны, разницы никакой нет между этими действиями.
Так я же говорю что группа скрывается, но название группы все равно остается...

#158 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 02 Июль 2014 - 15:32

Т.е. вы применяете display_fgroup и при этом остается заголовок? Ничего не путаете? Группа должна скрываться целиком, не путайте с ее сворачиванием или скрытием полей.

#159 GoGPS

    Активный участник

  • Пользователи
  • PipPipPip
  • 159 сообщений
  • Пол:Мужчина

Отправлено 02 Июль 2014 - 15:35

Да, применяю display_fgroup

При нажатии на "Добавить запись" открывается страница в которой все поля в группах скрыты, но сами заголовки групп видны, что не очень гуд...
Скрин прилагаю:

часть кода:

function onchange_{$one_field.id}()
{

display_fgroup(450, document.getElementById('value{$one_field.id}').value=="Оборудование"
|| document.getElementById('value{$one_field.id}').value=="Проблема"
|| document.getElementById('value{$one_field.id}').value=="Встреча"
|| document.getElementById('value{$one_field.id}').value=="Выставить счет"
|| document.getElementById('value{$one_field.id}').value=="Предложение");

}
addHandler(document.getElementById('value{$one_field.id}'), 'onchange', onchange_{$one_field.id});

Не исключаю что накосячено в коде... :)

Прикрепленные изображения

  • Прикрепленное изображение: fgroup.png

Сообщение отредактировал GoGPS: 02 Июль 2014 - 15:43


#160 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 02 Июль 2014 - 17:35

Какая связь между открытием страницы и вашим кодом? Ваш код настроен на событие изменения поля, а не на загрузку страницы. При нажатии на "Добавить запись" у вас вообще никакой JS не работает, группы как были так и остаются на том же месте, они просто свернуты по умолчанию.





Количество пользователей, читающих эту тему: 33

0 пользователей, 33 гостей, 0 анонимных