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


Javascript в подчиненных таблицах


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

#1 arsenal

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

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

Отправлено 24 Август 2011 - 16:18

При помощи JS скрываю некоторые поля в подчиненной таблице.
Но при просмотре/редактировании записи в основной таблице, поля подчиненной таблицы (которые отображаются внизу) всё равно показываются все, т.е. там JS не работает.
Так и должно быть?
Если так, то может сделать так, чтобы и там они скрывались. Это же логично.

И еще вопрос.
Я вставляю функцию
display_field(1308,document.getElementById('value1308').value=="");
т.е. хочу, что бы если поле пустое, то оно скрывается. Но это не срабатывает. Почему?

#2 CbCoder

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

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

Отправлено 25 Август 2011 - 11:58

В подчиненных таблицах нужно обязательно использовать переменную {$one_field.line_id}, т.к. там может быть несколько записей, соответственно id элементов-полей у них разный, состоящий из id собственно поля и строки (иначе было бы несколько одноименных элементов и JS выдавал ошибку). Кстати, насчет ошибок - используйте отладчик JS в браузере, так вы сразу увидите по какой причине у вас не работает код.

Код display_field('{$one_field.id}_{$one_field.line_id}', document.getElementById('value{$one_field.id}_{$one_field.line_id}').value==""); по идее должен работать.

#3 arsenal

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

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

Отправлено 25 Август 2011 - 13:20

Поэкспериментировав, выяснил следующее.
Переменная {$one_field.id}_{$one_field.line_id} в подчиненной таблице срабатывает в подчиненных записях только при просмотре/редактировании записи в основной таблице [attachment=177:основ.jpg] и это логично, т.к. там может выводиться сразу несколько подчиненных записей, но не работает при непосредственном просмотре/редактировании подчиненной записи [attachment=176:подч.jpg]. Здесь работает только переменная {$one_field.id} и это логично, т.к. мы просматриваем только одну запись.
Какую же тогда переменную использовать, чтобы в разных режимах просмотра/редактирования поля скрывались как положено?

#4 CbCoder

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

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

Отправлено 25 Август 2011 - 13:34

Используйте код с условием:

{if $one_field.table_id!=$table_id}
display_field('{$one_field.id}_{$one_field.line_id}', document.getElementById('value{$one_field.id}_{$one_field.line_id}').value=="");
{else}
display_field('{$one_field.id}', document.getElementById('value{$one_field.id}').value=="");
{/if}

Здесь используется условие Smarty, его можно использовать в составе JS кода. При компиляции в HTML отстанется только один вариант.

#5 arsenal

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

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

Отправлено 25 Август 2011 - 21:05

Все работает, большое спасибо.





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

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