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


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


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

#121 GoGPS

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

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

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

Помогите плс.
Есть поле связи (ID 2370)
Если в поле связи (ID 2370) выбрано что то из списка, показывается поле (ID 1211)
Если в поле связи (ID 2370) ничего не выбрано поле (ID 1211) не показывается. Получилось сделать при редактировании, при сохранении поле (ID 1211) все равно видно, если поле связи (ID 2370) пустое.

Вот код:
Это в поле (ID 2370)

function onchange_{$one_field.id}()
{
//alert(document.getElementById('value{$one_field.id}').value);
display_field(1211, document.getElementById('value{$one_field.id}').value !="");
}
$('#value{$one_field.id}').bind('change', onchange_{$one_field.id});

Это в поле (ID 1211)
display_field({$one_field.id}, document.getElementById('value2370').value != "");

Что сделал не так или чего не хватает?

Заранее спасибо!
ps. НЕ программист...

#122 CbCoder

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

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

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

Цитата

Это в поле (ID 1211)
display_field({$one_field.id}, document.getElementById('value2370').value != "");

Эта инструкция выполняется раньше, чем появляется элемент 2370 на странице. Либо переместите ее в поле 2370, либо занесите внутрь ready функции (пример был выше).

#123 GoGPS

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

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

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

Спасибо, но все равно не получилось.

Можете показать, что должно быть в поле связи 2370 и что должно быть в поле с ИД 1211
Очередность:

2370
1211

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

p.s. совсем не программер :)

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

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


#124 CbCoder

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

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

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

Сделайте так:

function onchange_{$one_field.id}()
{
  display_field(1211, document.getElementById('value{$one_field.id}').value !="");
}
$('#value{$one_field.id}').bind('change', onchange_{$one_field.id});
$(document).ready(onchange_{$one_field.id});

Это слегка дополненный код для поля 2370 по примеру отсюда. В поле 1211 код удалите.

#125 GoGPS

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

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

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

Не работает.

Прописал код в поле 2370, в поле 1211 удалил.

Открыл из таблицы одну из записей, поле 1211 видно, хотя в поле 2370 - пусто, т.е. ничего не выбрано. По логике поле 1211 должно быть скрыто.
Выбрал в поле 2370 некую запись, поле 1211 видно (т.е. как и должно быть, если в поле 2370 что то выбрано). Убрал в поле 2370 запись, поле 1211 скрылось. Нажал сохранить, поле 1211 опять стало видным.

Что то еще поправить вероятно надо?

#126 CbCoder

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

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

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

Должно работать по идее, хотя возможно я не прав. Тогда попробуйте этот вариант, он вроде неоднократно проверен:

$(document).ready(function(){
  display_field(1211, document.getElementById('value{$one_field.id}').value !="");
});
function onchange_{$one_field.id}(){
  display_field(1211, document.getElementById('value{$one_field.id}').value !="");
}
$('#value{$one_field.id}').bind('change', onchange_{$one_field.id});


#127 GoGPS

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

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

Отправлено 02 Январь 2014 - 16:39

Неа, не работает.

При загрузке страницы, видно поле 1211, хотя поле 2370 пустое.
При открытии на редактирование, при выбирании в поле 2370 какого то значение, поле 1211 видно. При выбирании в поле пустого значение, поле 1211 убирается, но при сохранении все равно видно.

#128 CbCoder

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

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

Отправлено 09 Январь 2014 - 10:18

Тогда затрудняюсь сказать, в чем дело. Пришлите заявку в техподдержку для проверки.

#129 Dinak

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

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

Отправлено 29 Апрель 2014 - 12:27

Коллеги доброго времени суток, прошу не судите строго, но я в танке :)

Нужно вычисление на скрытие полей по факту множественного выбора в списке:

Есть множественный список :
unction onchange_{$one_field.id}()
{
  display_field(2181, document.getElementById("value6570['Договор-Заявка (РФ)']").checked);
  display_field(6590, document.getElementById("value6570['СНГ']").checked);
  display_field(6600, document.getElementById("value6570['Европа']").checked);
  display_field(6610, document.getElementById("value6570['Фито-Вет. служба']").checked);
  display_field(6620, document.getElementById("value6570['Диспозиция груза']").checked);
  // id1 и id2 - id тех полей, которые необходимо скрыть/отобразить, вместо них подставляете нужные вам номера
}
addHandler(document.getElementById('value{$one_field.id}'), 'onchange', onchange_{$one_field.id});

В полях ставлю:
display_field(2181, document.getElementById("value6570['Договор-Заявка (РФ)']"));
// свой код на каждое поле

Итого: поля просто скрылись и никак не регаруют на изменения в списке :((


Хелп Пипл! :wacko:

#130 CbCoder

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

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

Отправлено 29 Апрель 2014 - 13:27

А почему в коде полей checked пропал? Причина в этом, очевидно.

#131 Dinak

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

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

Отправлено 29 Апрель 2014 - 13:33

Уточните пож-ста, я в танке :%))

#132 CbCoder

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

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

Отправлено 29 Апрель 2014 - 14:31

Ну так вылезайте из него)

В первом фрагменте:

display_field(2181, document.getElementById("value6570['Договор-Заявка (РФ)']").checked);

Во втором:

display_field(2181, document.getElementById("value6570['Договор-Заявка (РФ)']"));

Видим, что ".checked" куда-то пропало. Должно быть одинаково, естественно.

#133 Dinak

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

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

Отправлено 30 Апрель 2014 - 06:45

Помогло )) спасибо :)

#134 Dinak

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

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

Отправлено 30 Апрель 2014 - 07:36

Ещё вопрос в тему, как сделать чтобы скрытые поля также НЕ печатались в шаблоне печати (HTML), т.к. при печати все поля видны.

#135 CbCoder

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

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

Отправлено 30 Апрель 2014 - 08:09

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

#136 Dinak

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

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

Отправлено 30 Апрель 2014 - 08:10

О блинн )))))

#137 Tony999

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

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

Отправлено 15 Май 2014 - 00:48

Может я тут повторяюсь, но вот у меня нормально работает простой код:

display_field({$one_field.id},0); // Изначально закрываем поле, если необходимо

document.getElementById("value3781").onchange=function ()
{
var disp = 0; // Запрещаем открывать поле
if (
(document.getElementById("value3781").value == "3") ||
(document.getElementById("value3781").value == "7") ||
  )
	 {
	 disp = 1; // разрешаем открыть поле
	 }
display_field({$one_field.id},disp);
}

$one_field.id - это переменная, автоматически поставляет id поля, которое нужно скрыть. Код пишем в ячейке для JavaScript этого поля.
value3781 - это в данном случае поле со списком и поле связи, при выборе значений которого (3 и 7) открывается поле $one_field.id

Код применяется при создании новой записи. Пробовал то, что в документации - не получилось.
КБ - помощь, проекты и решения.
Хостинг. Аренда. Продажа.
ВашаБаза.рф

#138 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 332 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 15 Май 2014 - 13:40

Просмотр сообщенияTony999 (15 Май 2014 - 00:48) писал:

Может я тут повторяюсь, но вот у меня нормально работает простой код:

display_field({$one_field.id},0); // Изначально закрываем поле, если необходимо

document.getElementById("value3781").onchange=function ()
{
var disp = 0; // Запрещаем открывать поле
if (
(document.getElementById("value3781").value == "3") ||
(document.getElementById("value3781").value == "7") ||
  )
	 {
	 disp = 1; // разрешаем открыть поле
	 }
display_field({$one_field.id},disp);
}

$one_field.id - это переменная, автоматически поставляет id поля, которое нужно скрыть. Код пишем в ячейке для JavaScript этого поля.
value3781 - это в данном случае поле со списком и поле связи, при выборе значений которого (3 и 7) открывается поле $one_field.id

Код применяется при создании новой записи. Пробовал то, что в документации - не получилось.
Попробуйте
obj = document.getElementById('value{$one_field.id}');
$(obj).bind('change', on_change_{$one_field.id});

function on_change_{$one_field.id}(){
   var disp = !!($('#value3781').val()=='3' || $('#value3781').val()=='7');
   display_field({$one_field.id},disp);
}
Кстати, зачем после второго условия if стоит || ?

Творческая группа "ТАВР".

www.MEGATAVR.com Художественная ковка, витражи, мозаика, фрески.

www.iGal.pro Уникальный мангал.


#139 Tony999

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

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

Отправлено 15 Май 2014 - 18:30

Просмотр сообщенияandibrag (15 Май 2014 - 13:40) писал:

Попробуйте
obj = document.getElementById('value{$one_field.id}');
$(obj).bind('change', on_change_{$one_field.id});

function on_change_{$one_field.id}(){
   var disp = !!($('#value3781').val()=='3' || $('#value3781').val()=='7');
   display_field({$one_field.id},disp);
}
Кстати, зачем после второго условия if стоит || ?

Это просто ошибка... там больше условий было.
Спасибо! Ваш код явно лучше! :)
КБ - помощь, проекты и решения.
Хостинг. Аренда. Продажа.
ВашаБаза.рф

#140 Alexbalamyt

    Новичок

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

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

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

Объясните на простом на трех полях.
Топология : название поля и вариант выбора из заготовленного списка.

(поле №570) Объект : Квартира ; Дом ; Участок
(поле №790) Комнат : 1 комната ; 2 комнаты, 3 комнаты
(поле №820) Площадь : (тут уже выбора нет, вписываем руками)

Задача : изначально поля КОМНАТ и ПЛОЩАДЬ скрыты, есть поле ОБЪЕКТ, и по нему выводить нужные поля.
Объект = Квартира. Вывести надо поле : Комнат и площадь.
Объект = Дом. Вывести надо поле : Комнат и площадь.
Объект = Участок Вывести надо поле : Площадь.

Желательно объяснить так : в поле №570 в JS вписать код (приложен код с комментариями) Спасибо.

Сообщение отредактировал Alexbalamyt: 26 Июнь 2014 - 22:24






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

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