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


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


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

#41 CbCoder

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

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

Отправлено 31 Январь 2012 - 09:04

А в чем проблема то? Код не работает при размещении его в поле 928? Очевидно поле 928 идет перед 927, я правильно понимаю?

#42 arsenal

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

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

Отправлено 31 Январь 2012 - 09:44

Просмотр сообщенияРазработчик (31 Январь 2012 - 09:04) писал:

А в чем проблема то? Код не работает при размещении его в поле 928? Очевидно поле 928 идет перед 927, я правильно понимаю?
Код не работает при размещении его в других полях. Поле 928 идет после 927 (согласно нумерации полей в настройках).
Если в условии ставить проверку сразу нескольких полей, то условие не срабатывает, хотя если разделить проверку условия на отдельные поля и каждую проверку поставить в "свое" поле, то по отдельности они работают. А если их собрать в одном условии IF и разместить в одном из полей - то не работают.
Если эти условия ставить в функцию, которая срабатывает при каком-то событии, то все работает. А вот в режиме просмотра - нет.
В версии 194 это работало.

#43 CbCoder

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

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

Отправлено 31 Январь 2012 - 10:02

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

#44 CbCoder

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

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

Отправлено 16 Март 2012 - 15:25

Просмотр сообщенияshambler81 (28 Ноябрь 2011 - 20:25) писал:

Просмотр сообщенияРазработчик (10.10.2011, 16:43) писал:

Нет, не исправляли еще. Руки не дошли пока.
почти 2012 год руки так и не дошли

Руки дошли.

Просмотр сообщенияРазработчик (04 Август 2011 - 14:46) писал:

Не работает присвоение события на изменение для полей типа "связь". Причины попробуем устранить.

Алгоритм присвоения события для поля связи уже был описан ранее в другой теме: http://clientbase.ru...?showtopic=2600 . Если вкратце, необходимо применять присвоение события через функцию jQuery, а не через addHandler:

function onchange_{$one_field.id}()
{
  // ваша функция
}
$('#value{$one_field.id}').bind('change', onchange_{$one_field.id});


Просмотр сообщенияРазработчик (08 Август 2011 - 12:11) писал:

Просмотр сообщенияarsenal (8.8.2011, 12:37) писал:

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

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

#45 Lovent

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

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

Отправлено 06 Апрель 2012 - 02:39

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

КОД В ПОЛЕ СО СПИСКОМ

function onchange_{$one_field.id}()
{
display_field(2777, 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=="утеряно");

display_field(2773, 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=="утеряно");

display_field(2774, 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=="утеряно");

display_field(2775, document.getElementById('value{$one_field.id}').value=="получен ответ" || document.getElementById('value{$one_field.id}').value=="зависло" || document.getElementById('value{$one_field.id}').value=="утеряно");
display_field(2778, document.getElementById('value{$one_field.id}').value=="получен ответ" || document.getElementById('value{$one_field.id}').value=="зависло" || document.getElementById('value{$one_field.id}').value=="утеряно");
// id1 и id2 - id тех полей, которые необходимо скрыть/отобразить, вместо них подставляете нужные вам номера
}
addHandler(document.getElementById('value{$one_field.id}'), 'onchange', onchange_{$one_field.id});




КОД В ПОЛЯ:
display_field({$one_field.id}, document.getElementById('value2779').value=="отправлено" || {$one_field.id}, document.getElementById('value2779').value=="доставлено" || {$one_field.id}, document.getElementById('value2779').value=="получен ответ" || {$one_field.id}, document.getElementById('value2779').value=="зависло" || {$one_field.id}, document.getElementById('value2779').value=="утеряно");
// ID заменяете на реальный id поля "список"



display_field({$one_field.id}, document.getElementById('value2779').value=="доставлено" || {$one_field.id}, document.getElementById('value2779').value=="получен ответ" || {$one_field.id}, document.getElementById('value2779').value=="зависло" || {$one_field.id}, document.getElementById('value2779').value=="утеряно");
// ID заменяете на реальный id поля "список"



display_field({$one_field.id}, document.getElementById('value2779').value=="получен ответ" || {$one_field.id}, document.getElementById('value2779').value=="зависло" || {$one_field.id}, document.getElementById('value2779').value=="утеряно");
// ID заменяете на реальный id поля "список"

#46 Гость_Roman_*

  • Гости

Отправлено 06 Апрель 2012 - 07:52

Проверьте консоль ошибок в браузере, скорее всего, во время загрузки страницы функция срабатывает по ещё не загруженному элементу.

#47 smart

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

  • Пользователи
  • PipPipPip
  • 297 сообщений
  • Пол:Мужчина
  • Интересы:v1980.8@gmail.com

Отправлено 07 Июнь 2012 - 16:42

коллеги, получается сейчас можно делать скрытие/показ полей и при множественном выборе (в полях с типом список)?

#48 CbCoder

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

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

Отправлено 07 Июнь 2012 - 17:17

Ну, написали же выше, что да. Или у вас не так?

#49 andibrag

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

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

Отправлено 07 Сентябрь 2012 - 22:22

Использование display_fgroup(##,1) делает группу не просто видимой, но и открытой независимо от настроек ее свернутости. Можно вылечить?

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

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

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


#50 CbCoder

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

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

Отправлено 10 Сентябрь 2012 - 15:51

Вылечили, выйдет в очередной ревизии.

#51 nk

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

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

Отправлено 08 Ноябрь 2012 - 00:14

Просмотр сообщенияCbCoder (07 Июнь 2012 - 17:17) писал:

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

в списке с множественным выбором
function onchange_{$one_field.id}()
{
display_field(194, document.getElementById('value193').value == 'Расчеты');
}
$('#value{$one_field.id}').bind('change', onchange_{$one_field.id});

в отображаемом/скрываемом поле
display_field(194, document.getElementById('value193').value == 'Расчеты');

в результате поле 194 всегда скрыто, при установке галочки в строке 'Расчеты' ничего не происходит

#52 CbCoder

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

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

Отправлено 08 Ноябрь 2012 - 10:01

Данный код некорректен, об этом вам уже писал andibrag в другой ветке. Официального решения на данный момент нет, можете опять же попробовать воспользоваться тем, что предлагает andibrag там же.

В дальнейшем вероятно исправим данную ситуацию.

#53 CbCoder

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

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

Отправлено 17 Ноябрь 2012 - 16:55

Просмотр сообщенияCbCoder (08 Ноябрь 2012 - 10:01) писал:

В дальнейшем вероятно исправим данную ситуацию.

Исправили. Теперь пример выше необходимо записать так:

function onchange_{$one_field.id}()
{
  display_field(194, document.getElementById("value193['Расчеты']").checked);
}
$('#value{$one_field.id}').bind('change', onchange_{$one_field.id});


#54 nk

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

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

Отправлено 19 Ноябрь 2012 - 07:48

спасибо, все работает

#55 Oleg_

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

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

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

Подскажите как правильно записать условие
else if(document.getElementById('value1451').value!=="" && (document.getElementById('value{$user['id']}').value=="1")
"если текущий пользователь 1"
то
display_field(1432, 1);

Сообщение отредактировал Oleg_: 12 Декабрь 2012 - 00:48


#56 CbCoder

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

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

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

А зачем вы вместо id поля подставили user id, не понял? Его нужно вставлять на место значения, а не подменять им id поля.

Например:

if (document.getElementById('value111').value=={$user.id}) display_field(1432, 1);

111 - id поля "пользователь"

#57 Oleg_

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

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

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

по причине недопонимания :)

#58 Oleg_

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

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

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

не то что мне нужно.
if (document.getElementById('value111').value=={$user.id}) display_field(1432, 1);
если я правильно понял, показывает поле если текущий пользователь является создателем записи.
А мне надо, что бы поле показывалось определенному пользователю, даже если запись ему не принадлежит.
Как то так должно быть
если ('value{текущий пользователь}')=="1")
то поле показать
если нет
то не показывать

Сообщение отредактировал Oleg_: 12 Декабрь 2012 - 22:30


#59 nk

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

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

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

if ({$user.id} == 1) display_field(1432, 1);

#60 CbCoder

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

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

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

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

если я правильно понял, показывает поле если текущий пользователь является создателем записи

Неправильно поняли. Показывает, если поле с id = 111 равно текущему пользователю.

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

А мне надо, что бы поле показывалось определенному пользователю

Тогда см. код выше от nk. Ваш первоначальный вариант в любом случае неверный.





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

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