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


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


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

#61 Oleg_

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

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

Отправлено 14 Декабрь 2012 - 21:40

Спасибо заработало, только теперь не понятно, почему если закрыть доступ для редактирования 1432, то скрипт не работает, несмотря на то что для чтения открыт?

#62 nk

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

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

Отправлено 14 Декабрь 2012 - 23:38

есть такая проблема :(

#63 CbCoder

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

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

Отправлено 15 Декабрь 2012 - 12:02

Просмотр сообщенияOleg_ (14 Декабрь 2012 - 21:40) писал:

только теперь не понятно, почему если закрыть доступ для редактирования 1432, то скрипт не работает, несмотря на то что для чтения открыт?

Странно, должно работать. Попробуйте тогда такой вариант:

if ({$user.id} == 1) document.getElementById('field_view1432').style.display = '';


#64 Oleg_

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

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

Отправлено 16 Декабрь 2012 - 17:30

без изменений, не работает

#65 Oleg_

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

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

Отправлено 17 Декабрь 2012 - 00:26

Можно ли сделать что бы при изменении поля в основной таблице, скрывалось поле в подчиненной?
function onchange_{$one_field.id}()
{
display_field(ПОЛЕ В ПОДЧИНЕННОЙ ТАБЛИЦЕ, document.getElementById('value{$one_field.id}').value=="Нет");
}


#66 nk

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

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

Отправлено 17 Декабрь 2012 - 02:25

подтверждаю баг:

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

если у юзера есть права и на редактирование - display_field работает и в посмотре и в редактировании как надо

#67 OLDest

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

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

Отправлено 18 Декабрь 2012 - 10:07

Есть такая проблема. вот код поля


function onchange_{$one_field.id}()
{
display_fgroup(70, document.getElementById('value{$one_field.id}').value!='8');
}
$('#value{$one_field.id}').bind('change', onchange_{$one_field.id});
addHandler(document.getElementById("value{$one_field.id}"), "onchange", onchange_{$one_field.id});

Работает но не сразу. т.е. Когда открываешь запись на редактирование группа 70 сразу видна, при изменении значений она скрывается. как сделать так чтоб сразу группа была скрыта?
Купил лицензию КБ

#68 Гость_Roman_*

  • Гости

Отправлено 18 Декабрь 2012 - 10:20

Добавьте принудительный вызов функции после загрузки страницы в конец кода. Например, так:

$(document).ready(function() {
  onchange_{$one_field.id}();
});


#69 OLDest

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

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

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

Спасибо, помогло!
Купил лицензию КБ

#70 OLDest

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

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

Отправлено 18 Декабрь 2012 - 10:37

Еще вопрос - сразу скажу что javascript для меня мало знаком. как узнать что значение поля изменилось? ну т.е. что при выборе из списка выбрано другое значение, не равное тому, что было при открытии на редактировании?
Купил лицензию КБ

#71 Гость_Roman_*

  • Гости

Отправлено 18 Декабрь 2012 - 10:43

// Получаем начальное значение поля
var startValue = document.getElementById('value{$one_field.id}').value;
function onchange_{$one_field.id}()
{
  display_fgroup(70, document.getElementById('value{$one_field.id}').value!='8');
  if (document.getElementById('value{$one_field.id}').value != startValue) // Проверяем новое значение
	alert("Поле было изменено!");
}
$('#value{$one_field.id}').bind('change', onchange_{$one_field.id});
addHandler(document.getElementById("value{$one_field.id}"), "onchange", onchange_{$one_field.id});


#72 OLDest

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

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

Отправлено 18 Декабрь 2012 - 10:54

Спасибо! понял :-)

var startValue = document.getElementById('value{$one_field.id}').value;
function onchange_{$one_field.id}()
{
  display_fgroup(70, document.getElementById('value{$one_field.id}').value!=startValue);
}
$('#value{$one_field.id}').bind('change', onchange_{$one_field.id});
addHandler(document.getElementById("value{$one_field.id}"), "onchange", onchange_{$one_field.id});
$(document).ready(function() {
  onchange_{$one_field.id}();
});

Купил лицензию КБ

#73 OLDest

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

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

Отправлено 18 Декабрь 2012 - 14:13

Интересная ошибка, если в var startValue = document.getElementById('value{$one_field.id}').value вместо {$one_field.id} подставить 1774 (это id элемента) - скрипт вызывает ошибку.

Сообщение отредактировал OLDest: 18 Декабрь 2012 - 14:13

Купил лицензию КБ

#74 Гость_Roman_*

  • Гости

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

Какая ошибка?

#75 OLDest

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

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

Отправлено 18 Декабрь 2012 - 14:50

не выполняется скрипт
Купил лицензию КБ

#76 OLDest

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

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

Отправлено 18 Декабрь 2012 - 14:53

при этом
document.getElementById('value1774').value='Изменение статуса с "'+startValue1+'" на "'+document.getElementById('edit_value{$one_field.id}').value+'"';
работает
Купил лицензию КБ

#77 Гость_Roman_*

  • Гости

Отправлено 18 Декабрь 2012 - 14:54

Возможно, что то поле находится в коде страницы ниже кода Javascript. В этом случае, необходимо вынести эту строку в то поле или ниже по списку, либо же сделать так:
$(document).ready(function() {
  var startValue = document.getElementById('value1774').value;
  onchange_{$one_field.id}();
});


#78 KLV

    Участник

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

Отправлено 30 Январь 2013 - 11:59

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

Приведу пример. Имеется таблица Клиент, ей подчинена таблица Объект, а таблице Объект есть подчиненная таблица Документ.
В таблице Документ необходимо скрыть поле, если в таблице Клиент поле списка принимает конкретное значение.

Такая функция осуществима? Если да, то как?

Сообщение отредактировал KLV: 30 Январь 2013 - 12:00


#79 CbCoder

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

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

Отправлено 30 Январь 2013 - 14:27

Скрытие через javascript работает только в основной записи, про это писали уже много раз. В подчиненных таблицах скрыть поля динамически в принципе нельзя.

#80 shambler81

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

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

Отправлено 25 Апрель 2013 - 16:17

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


$(function(){
on_change_sel();

function on_change_sel() {
if (document.getElementById('value2201').value=='Юридическое'){
show_urid();
hide_fiz();

}else if(document.getElementById('value2201').value=='Физическое'){
show_fiz();
hide_urid();
}
}


$('a.button.edit').click(function(){ on_change_sel(); });

$('#value2201').change(function(){ on_change_sel(); });

function show_urid(){
display_field(439,1); //Юридическое название
display_field(440,1); //Юридический адрес
display_field(1056,1); //ИНН
display_field(1057,1); //КПП
display_field(1058,1); //Расчетный счет
display_field(1065,1); //банк
display_field(1059,1); //Корр. счет
display_field(1060,1); //Лицевой счет
display_field(1061,1); //БИК
display_field(1062,1); //Руководитель
display_field(1063,1); //Бухгалтер
display_field(1064,1); //Код ОКАТО
display_field(1066,1); //КБК
display_field(3301,1); //ОКВЭД
display_field(3311,1); //ОКПО
display_field(2671,1); //ОГРН
}

function hide_urid(){
display_field(439,0); //Юридическое название
display_field(440,0); //Юридический адрес
display_field(1056,0); //ИНН
display_field(1057,0); //КПП
display_field(1058,0); //Расчетный счет
display_field(1065,0); //банк
display_field(1059,0); //Корр. счет
display_field(1060,0); //Лицевой счет
display_field(1061,0); //БИК
display_field(1062,0); //Руководитель
display_field(1063,0); //Бухгалтер
display_field(1064,0); //Код ОКАТО
display_field(1066,0); //КБК
display_field(3301,0); //ОКВЭД
display_field(3311,0); //ОКПО
display_field(2671,0); //ОГРН
}

function show_fiz(){
display_field(2151,1); // фио
display_field(2161,1); //паспорт серия
display_field(2171,1); //Паспорт номер
display_field(2181,1); //Кем выдан
display_field(2191,1); //Дата выдачи
display_field(2391,1); //Место работы


}

function hide_fiz(){
display_field(2151,0); // фио
display_field(2161,0); //паспорт серия
display_field(2171,0); //Паспорт номер
display_field(2181,0); //Кем выдан
display_field(2191,0); //Дата выдачи
display_field(2391,0); //Место работы
}


});






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

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