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


Публикации nk

107 публикаций создано nk (учитываются публикации только с 29-Май 23)



#15499 показ/скрытие полей по условию

Отправлено от nk в 06 Ноябрь 2012 - 23:42 in Как это сделать

Для полей нужный эффект достигается переносом строки
display_field(1, document.getElementById('value{$one_field.id}').value == 'техническое');
в javascript самого отображаемого поля... а как быть с группами?



#15497 показ/скрытие полей по условию

Отправлено от nk в 06 Ноябрь 2012 - 22:13 in Как это сделать

Есть поле типа "список", три строки: техническое/психология/другое. Есть три группы "для технических", "для психологии", "для остальных", под каждой группой десяток полей. Надо чтобы при выборе "техническое" отображалась группа и поля "для технических", и при этом скрывались группа и поля "для психологии" и наоборот.

javascript в этом поле

display_fgroup(1, document.getElementById('value{$one_field.id}').value == 'техническое');
display_fgroup(2, document.getElementById('value{$one_field.id}').value == 'психология');

function onchange_{$one_field.id}()
{
display_fgroup(1, document.getElementById('value{$one_field.id}').value == 'техническое');
display_fgroup(2, document.getElementById('value{$one_field.id}').value == 'психология');
}
$('#value{$one_field.id}').bind('change', onchange_{$one_field.id});


Все скрывается/отображается как надо при изменении значения в поле типа "список" и при открытии записи. Но при нажатии кнопки "редактировать" отображаются обе группы, и то же самое при создании записи, когда значение из списка ещё не выбрано.

Это баг, или надо ещё какие-то события обрабатывать?

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

  • Прикрепленное изображение: p3.jpg
  • Прикрепленное изображение: p2.jpg
  • Прикрепленное изображение: p1.jpg



#15524 показ/скрытие полей по условию

Отправлено от nk в 07 Ноябрь 2012 - 11:56 in Как это сделать

Пичего не изменилось, даже перезашел и куки почистил. В обработчике вернул сравнение с value.

Ещё раз: при создании записи и при входе в редактирование отображаются обе группы, при просмотре записи и при изменении значения поля "список" отображение происходит правильно.
У группы нельзя написать javascript. У полей display_field(123, document.getElementById('value{$one_field.id}').value =='психология'); я пишу именно именно в отображаемом поле (а не в изменяемом поле) - и с полями все ок.



#15540 показ/скрытие полей по условию

Отправлено от nk в 07 Ноябрь 2012 - 15:04 in Как это сделать

И всё-таки работает не идеально: если выбрано пустое значение, при входе в редактирование обе группы скрыты - ок; если выбрать значение "психология" - появляется одна группа - ок; но при отказе от сохранения возвращаемся в просмотр и видим отображенную группу "психология", хотя значение выбрано пустое (не сохранили запись).

Такое чувство, что надо как-то по-другому делать.



#15556 показ/скрытие полей по условию

Отправлено от nk в 08 Ноябрь 2012 - 01:11 in Как это сделать

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

Решение более лаконичное. Все оказалось несколько проще :)

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



#15515 показ/скрытие полей по условию

Отправлено от nk в 07 Ноябрь 2012 - 10:00 in Как это сделать

Просмотр сообщенияandibrag (07 Ноябрь 2012 - 09:57) писал:

В crome это должно работать.
Посмотрел у себя. - попробуйте махнуть местами. В onchange оставьте innerText, в начале модуля value.

нет, при редактировании все появляются, при любом выборе все исчезают (в IE аналогично все)

display_fgroup(1, document.getElementById('value{$one_field.id}').value == 'техническое');
display_fgroup(2, document.getElementById('value{$one_field.id}').value == 'психология');

function onchange_{$one_field.id}()
{
display_fgroup(1, document.getElementById('value{$one_field.id}').innerText == 'техническое');
display_fgroup(2, document.getElementById('value{$one_field.id}').innerText == 'психология');
}
$('#value{$one_field.id}').bind('change', onchange_{$one_field.id});



#15554 показ/скрытие полей по условию

Отправлено от nk в 08 Ноябрь 2012 - 01:04 in Как это сделать

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



#15509 показ/скрытие полей по условию

Отправлено от nk в 07 Ноябрь 2012 - 09:33 in Как это сделать

Просмотр сообщенияandibrag (07 Ноябрь 2012 - 01:17) писал:

Какой браузер у Вас?
Хром последний


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


​в чейндже оставил value, в начале модуля innerText - все работает так же, как описано в первом посте



#15551 показ/скрытие полей по условию

Отправлено от nk в 07 Ноябрь 2012 - 23:14 in Как это сделать

Пока техподдержка отвечает, у меня ещё один вопрос: как в аналогичной ситуации проверить выбор значения из списка, при том что в списке включен множественный выбор? Какое условие поставить и на какое событие вешать, чтобы определить, что напротив определенного значения стоит галочка или не стоит?

разобрался, http://clientbase.ru...indpost&p=11222



#15518 показ/скрытие полей по условию

Отправлено от nk в 07 Ноябрь 2012 - 10:08 in Как это сделать

Может быть проблема связана с тем, что value{$one_field.id} это поле "список"?



#15533 показ/скрытие полей по условию

Отправлено от nk в 07 Ноябрь 2012 - 14:47 in Как это сделать

Просмотр сообщенияandibrag (07 Ноябрь 2012 - 14:41) писал:

Сорри. Забыл упомянуть про один нюанс. Скрипт должен отработать только после загрузки всей страницы.
Добавьте в начало
$(document).ready(function(){
и закройте это все в конце
})

да, теперь все ок (везде использую value)


можете объяснить суть этой функции? почему с полями все работает без нее?



#15510 показ/скрытие полей по условию

Отправлено от nk в 07 Ноябрь 2012 - 09:34 in Как это сделать

Для группы нельзя вписать яваскрипт
display_fgroup(1, document.getElementById('value{$one_field.id}').value == 'техническое');
?



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

Отправлено от nk в 19 Ноябрь 2012 - 07:48 in Как это сделать

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



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

Отправлено от nk в 13 Декабрь 2012 - 09:27 in Как это сделать

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



#14844 Подтянуть данные из связанной таблицы

Отправлено от nk в 03 Октябрь 2012 - 13:29 in Как это сделать

Спасибо, попробую так сделать, ещё один вопрос: можно ли обращаться к полям записей по фиксированным именам, а не по алиасам, которые могут меняться?

Например вместо $line['Телефон'] использовать что-то вроде $line['f123'] ну или типа того. При изменении имени поля приходится искать все его упоминания во всех вычислениях. Особенно это печально на начальных этапах внедрения, когда требования к системе меняются с каждый день.



#15107 Подтянуть данные из связанной таблицы

Отправлено от nk в 18 Октябрь 2012 - 08:16 in Как это сделать

получилось, спасибо!



#14910 Подтянуть данные из связанной таблицы

Отправлено от nk в 07 Октябрь 2012 - 17:21 in Как это сделать

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

$("#value112").bind("change", function()
{
customer_val = document.getElementById("value112").value;
if (customer_val == "")
{
  document.getElementById("value113").value = "";
  document.getElementById("value114").value = "";
}
else
{
  $.ajax(
  {
   type: "POST",
   url: "user_button.php",
   data: { id: '4', line: '{$line_id}', customer_id: customer_val},
   success: function(msg)
   {
	eval(msg);
   }
  });
}
});

при очистке ничего не происходит



#15104 Подтянуть данные из связанной таблицы

Отправлено от nk в 18 Октябрь 2012 - 07:50 in Как это сделать

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

document.getElementById("value113").value = "";

а поле связи не очищается на самой форме - при сохранении ругается, что оно не заполнено, перевыбираешь - сохраняет

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

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



#14839 Подтянуть данные из связанной таблицы

Отправлено от nk в 03 Октябрь 2012 - 13:12 in Как это сделать

Просмотр сообщенияRoman (03 Октябрь 2012 - 13:09) писал:

Ну можно изменить JavaScript из примера. Т. е. если значение поля пустое, то делать пустым поле с телефоном, иначе выполняется AJAX-запрос.

Для поля связи значение надо сравнивать с '0' или с ''?



#14937 Подтянуть данные из связанной таблицы

Отправлено от nk в 08 Октябрь 2012 - 10:51 in Как это сделать

Просмотр сообщенияRoman (08 Октябрь 2012 - 08:15) писал:

Этот момент можно решить, написав вычисление при сохранении в подчинённой таблице. При добавлении записи оно сработает и заполнит сразу же необходимые поля.

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

на вопрос выше по очистке поля ответите?



#14847 Подтянуть данные из связанной таблицы

Отправлено от nk в 03 Октябрь 2012 - 14:19 in Как это сделать

Понятно, значит код переписывать не надо. Спасибо.



#14917 Подтянуть данные из связанной таблицы

Отправлено от nk в 07 Октябрь 2012 - 21:47 in Как это сделать

Можно ли аналогичную обработку повесить на добавление записи в подчиненную таблицу? Нажимаем кнопку "Добавить запись" и из родительской таблицы заполняются пара полей в подчиненной?



#14841 Подтянуть данные из связанной таблицы

Отправлено от nk в 03 Октябрь 2012 - 13:15 in Как это сделать

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

Например


$data['Тел'] = "12345";
$data['Адр'] = "улица";
echo $data;
exit;



#14837 Подтянуть данные из связанной таблицы

Отправлено от nk в 03 Октябрь 2012 - 12:37 in Как это сделать

Делал по примеру http://clientbase.ru...?showtopic=3620, я так понимаю, другого способа нет?

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



#14817 Подтянуть данные из связанной таблицы

Отправлено от nk в 03 Октябрь 2012 - 00:59 in Как это сделать

Как сделать, чтобы при выборе значения в поле связи другое поле текущей таблицы заполнилось значением одного из полей связанной таблицы?

Например, выбираем клиента, в поле "Тел" записывается значение поля "Телефон" из таблицы клиенты (из выбранной строки).

Не вычислением при сохранении записи, а чтобы заполнилось при редактировании записи, как только выбрали значение в поле связи.