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


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


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

#101 goodcolor

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

  • Пользователи
  • PipPipPip
  • 193 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 16 Август 2013 - 14:16

Точно, сработало. Благодарю.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#102 KLV

    Участник

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

Отправлено 11 Сентябрь 2013 - 14:04

Немного запутался. Прошу помощи.
Есть три поля связи:
Объект1 (value'4831')
Объект2(value'4841')
Объект3(value'4871')

Задача. Если при добавлении записи заполняется поле Объект1 поля Объект2 и Объект3 скрываются, и уже в дальнейшем не видны в режиме редактирования и просмотра. Тоже самое с другими полями: если заполняется Объект2 поля Объект1 и Объект3 скрываются.

Сообщение отредактировал KLV: 11 Сентябрь 2013 - 14:04


#103 Гость_Roman_*

  • Гости

Отправлено 11 Сентябрь 2013 - 14:31

if (document.getElementById("value4831").value)
  { // Заполнено Объект1
    display_field(4841, 0);
    display_field(4871, 0);
  }
else if (document.getElementById("value4841").value)
  { // Заполнено Объект2
    display_field(4831, 0);
    display_field(4871, 0);
  }
else if (document.getElementById("value4871").value)
  { // Заполнено Объект3
    display_field(4831, 0);
    display_field(4841, 0);
  }


#104 KLV

    Участник

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

Отправлено 12 Сентябрь 2013 - 09:21

Все хорошо при добавлении записи. Но при просмотре и редактировании код не срабатывает. Использую следующую функцию:
function onchange_{$one_field.id}()
{
{Код}
}
$('#value{$one_field.id}').bind('change', onchange_{$one_field.id});


#105 Гость_Roman_*

  • Гости

Отправлено 13 Сентябрь 2013 - 07:48

Вы можете вызвать эту функцию при загрузке страницы.
function afterLoad()
{
{Код}
}
$(document).ready(function() { afterLoad(); });


#106 KLV

    Участник

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

Отправлено 13 Сентябрь 2013 - 08:15

Да, но если задействовать эту функцию, то при добавлении записи отображается только одно поле объекта (еще пустое) — то, в котором код загрузился последним.

#107 Гость_Roman_*

  • Гости

Отправлено 13 Сентябрь 2013 - 09:09

Все поля типа текст? Может стоит вводить проверку не просто if (document.getElementById("value4871").value) , а if (document.getElementById("value4871").value != '') ? Так как функция не должна скрывть поля, если они пустые.

#108 KLV

    Участник

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

Отправлено 13 Сентябрь 2013 - 09:16

Я же писал в первом посте:

Цитата

Есть три поля связи:
Объект1 (value'4831')
Объект2(value'4841')
Объект3(value'4871')
У меня именно проблема с полями типа связь. С текстовыми полями бы таких проблем не возникло :)

#109 Гость_Roman_*

  • Гости

Отправлено 13 Сентябрь 2013 - 09:31

Ну тогда надо проверять на нулевое значение.
if (document.getElementById("value4871").value != '0')


#110 KLV

    Участник

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

Отправлено 16 Сентябрь 2013 - 09:05

Ага. Значит, при пустое поле связи равно нулю. В общем, решил проблему следующим образом. Для мгновенного срабатывания срабатывания (при добавлении записи) использовал функцию change (код вставляется в каждое из участвующих полей, при этом значение в условии if меняется на id поля, в которое вставлен код).
function onchange_{$one_field.id}()
{
if (document.getElementById('value4831').value)
  {
    display_field(4841, 0);
    display_field(4871, 0);
  }
else if (document.getElementById('value4841').value)
  {
    display_field(4831, 0);
    display_field(4871, 0);
  }
else if (document.getElementById('value4871').value)
  {
    display_field(4831, 0);
    display_field(4841, 0);
  }
}
$('#value{$one_field.id}').bind('change', onchange_{$one_field.id});

Затем в настройках во вкладке Доступа настроил поперемнно три правила на отображение полей. С условием: Если Объект1 не равен 0 и Если Объект2 равен 0 и Если Объект3 равен 0, то отображать Объект1, а Объект2 и Объект3 скрывать.

Заработало.

#111 ber

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

  • Пользователи
  • PipPipPip
  • 229 сообщений
  • Пол:Мужчина
  • Город:Москва

Отправлено 30 Октябрь 2013 - 22:17

Возможно ли указать в JavaScript для доп действия код, скрывающий кнопку при соответствующем значении поля записи типа список?
www.its-truck.ru - Группа компаний ИТС
www.intertransservice.ru - ИТС-МАН - Официальный дилер MAN Truck and Bus
www.its-daf.ru - ИТС-ДАФ - Официальный дилер DAF Trucks
www.its-hino.ru - ИТС-Хино - Официальный дилер Hino Motors
www.its-kamaz.ru - ИТС-Камаз - Официальный дилер ПАО КамАЗ
www.trp-parts.ru - Интернет-магазин запасных частей для грузовых авто

#112 CbCoder

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

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

Отправлено 31 Октябрь 2013 - 09:18

Возможно, только код нужно указывать в js поля, а не доп.действия. JS доп.действия служит для других целей.

#113 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 156 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 05 Декабрь 2013 - 12:13

display_field(3521,$('#view_cell_{$one_field.id}').text() =="Отказ");
добавлен такой код. в режиме просмотра все гуд, однако при добавлении и редактировании все равно поле показывается. так и должно быть?

#114 CbCoder

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

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

Отправлено 05 Декабрь 2013 - 12:25

При добавлении очевидно нет элемента с id "view_cell_{$one_field.id}", следовательно условие не выполняется.

#115 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 156 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 05 Декабрь 2013 - 12:49

Есть два поля, 3541 - причина отказа и 1741 - статус обращения. Я создаю такой код для

// Выключение отображения поля при загрузке страницы
display_field(3521, document.getElementById('value{$one_field.id}').value=="Отказ");
function onchange_{$one_field.id}()
{ // Функция по событию "изменение поля"
  display_field(3521,document.getElementById('value{$one_field.id}').value=="Отказ");
}
addHandler(document.getElementById("value{$one_field.id}"), "onchange", onchange_{$one_field.id});

Полчему поле 3541 в режиме добавления и редактирования изначально показывается, если не выбран отказ? При этом при смене статуса обращения - поле скрывается и показывается как нужно. Больше яваскрипта нет. Код в поле 1741($one_field.id)

Сообщение отредактировал wondertalik: 05 Декабрь 2013 - 12:56


#116 CbCoder

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

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

Отправлено 05 Декабрь 2013 - 13:50

Потому что при загрузке поля 1741, поля 3521 еще нет на странице, а команда display_field(3521, ...) уже пытается сработать. Код нужно видоизменить:

$(document).ready( function(){ // код внутри сработает только при полной загрузке структуры страницы
  display_field(3521, document.getElementById('value{$one_field.id}').value=="Отказ");
});
function onchange_{$one_field.id}()
{ // Функция по событию "изменение поля"
  display_field(3521,document.getElementById('value{$one_field.id}').value=="Отказ");
}
addHandler(document.getElementById("value{$one_field.id}"), "onchange", onchange_{$one_field.id});

См. $(document).ready

#117 CbCoder

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

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

Отправлено 05 Декабрь 2013 - 13:53

Или более компактный вариант кода:

function onchange_{$one_field.id}()
{ // Функция по событию "изменение поля"
  display_field(3521,document.getElementById('value{$one_field.id}').value=="Отказ");
}
addHandler(document.getElementById("value{$one_field.id}"), "onchange", onchange_{$one_field.id});
$(document).ready(onchange_{$one_field.id}); // помещаем имя функции вместо кода


#118 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 156 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 05 Декабрь 2013 - 14:10

Просмотр сообщенияCbCoder (05 Декабрь 2013 - 13:50) писал:

Снова на теже грабли наступил. Спасибо, вылетело из головы.

#119 GoGPS

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

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

Отправлено 10 Декабрь 2013 - 15:30

Ребята, для тех кто на бронепоезде подскажите элементарную вещь.
В зависимости от выбора нужно либо показать либо скрыть поле при просмотре.

Приведу пример:

Поле Аренда, список Да/ Нет, ид 7080
Поле Да, ид 7090.
В зависимости от того что выбрано в поле Аренда, поле Да либо показывается либо не показывается.

При редактировании все работает. Выбираю Да, показывается поле Да. Выбираю Нет, скрывается поле Да. Но при сохранении - поле Да все равно показывается.

Прошерстил всю тему на форуме. Так и не получилось добиться + результата.

Заранее спасибо за помощь.

#120 GoGPS

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

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

Отправлено 10 Декабрь 2013 - 16:31

Разобрался, вопрос снят...





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

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