Показ/скрытие полей через JavaScript
#281
Отправлено 01 Март 2016 - 17:20
#282
Отправлено 02 Март 2016 - 09:53
буду пробовать сделать чуть иначе тогда.
Сообщение отредактировал lexer92: 02 Март 2016 - 10:06
#283
Отправлено 02 Март 2016 - 10:39
document.getElementById('main111').value = 1; // 111 заменяете на id нужного поля
Данный способ реализации обязательного для заполнения поля не работает в списках со множественным выбором, как решить проблему?
Сообщение отредактировал Dinak: 02 Март 2016 - 10:42
#284
Отправлено 02 Март 2016 - 11:21
Цитата
Там не работает не "способ реализации", а сама обязательность, очевидно по причине какого-то бага. Отправьте заявку в ТП с просьбой его исправить.
#285
Отправлено 04 Март 2016 - 00:14
/** * Очищает поле * @param number * @param isFieldBind bool если поле связи */ function clearField(number, show, isFieldBind) { if (isFieldBind) { $("#edit_value" + number).val(''); $("#value" + number).val(0); } else { $("#value" + number).val(''); } display_field(number, show); } function hideAll() { //клиент display_fgroup(760, 0); clearField(1067, 0, true); //данные клиента display_fgroup(770, 0); clearField(9490, 0, true); clearField(9500, 0, false); clearField(9510, 0, true); clearField(9520, 0, false); clearField(9530, 0, false); clearField(9540, 0, false); clearField(9550, 0, false); clearField(9560, 0, false); //обьект display_fgroup(780, 0); clearField(8430, 0, true); //данные обьекта display_fgroup(800, 0); clearField(9570, 0, true); clearField(9520, 0, false); clearField(9530, 0, false); clearField(9560, 0, true); clearField(9570, 0, false); clearField(9550, 0, false); clearField(9580, 0, false); clearField(9610, 0, false); //дата время display_fgroup(790, 0); clearField(9590, 0, false); clearField(9600, 0, false); //другое display_fgroup(810, 0); clearField(9640, 0, false); } function changeRelative() { var value = $("#value8420").val().trim(); } function changeSubject() { var value = $("#value8420").val().trim(); console.log(value); if (value == 12) { //встреча clearField(9680, 1, true); $("#value9680").change(function () { var rel = $(this).val(); hideAll(); if (rel == 21) { display_fgroup(760, 1); //с клиентом clearField(1067, 1, true); } else if (rel == 22) { display_fgroup(780, 1); //с обьектом clearField(8430, 1, true); } }); } } $(function () { hideAll(); //с чем связано clearField(9680, 0, true); $('#value8420').change(function () { changeSubject(); }); });
Есть такой код, после загрузки страницы нет кнопки сохранить и других полей. Убираю
$("#value9680").change(function () { var rel = $(this).val(); hideAll(); if (rel == 21) { display_fgroup(760, 1); //с клиентом clearField(1067, 1, true); } else if (rel == 22) { display_fgroup(780, 1); //с обьектом clearField(8430, 1, true); } });Кнопка сохранить появляется. Ошибок в консоли нет. Что не так?
#287
Отправлено 21 Май 2016 - 15:02
#288
Отправлено 07 Июль 2016 - 11:56
function onchange_{$one_field.id}()
{ // Функция по событию "изменение поля"
var disp = document.getElementById("value{$one_field.id}").value != 0;
display_field(5900, disp);
display_field(6170, disp);
display_field(5830, disp);
display_field(5840, disp);
display_field(6240, disp);
display_field(5910, disp);
display_field(6680, disp);
display_field(5920, disp);
display_field(8220, disp);
display_field(6150, disp);
document.getElementById("value{8680}").value = document.getElementById("value{$one_field.id}").value;
};
$('#value{$one_field.id}').bind('change', onchange_{$one_field.id});
Теперь в этих полях, которые отобразились при изменении значения в списке, должны подгрузиться значения из связанной таблицы по соответствующему значению поля "связь". Получить значение поля связь проблем не составляет. Но как получить данные из таблицы? Если писать в php, то отработает только после сохранения. Можно как-то получить значения из js?
#289
Отправлено 07 Июль 2016 - 12:26
#290
Отправлено 07 Июль 2016 - 17:07
CbCoder (07 Июль 2016 - 12:26) писал:
Спасибо за ответ, понял. Про ajax и думал, надеялся, что уже была такая практика
Возможно ли, в таком случае, кодом (php или js все равно) по событию изменения поля написать, чтобы произошло автоматическое сохранение и обновление страницы (чтобы пользователю не нужно было нажимать кнопку "сохранить", а потом снова "редактировать")?
#291
Отправлено 07 Июль 2016 - 17:58
а потом снова "редактировать"
А для этого необходимо установить у скрытого элемента edit_mode значение 1, перед тем как вызывать код сохранения.
#292
Отправлено 08 Июль 2016 - 12:18
CbCoder (07 Июль 2016 - 17:58) писал:
Благодарю, все получилось.
#293
Отправлено 13 Июль 2016 - 11:54
Сообщение отредактировал RangeVision: 25 Июль 2016 - 15:49
#294
Отправлено 04 Октябрь 2016 - 19:17
Например в Поле 1 выбираем ААА, в Поле 2 устанавливается 111
Событие должно срабатывать только при изменении Поля 1.
----
Как сделать, чтобы при выборе варианта "Другое" в поле типа список, в это поле можно было ввести текст самостоятельно?
Сообщение отредактировал Аlex Jet: 06 Октябрь 2016 - 23:50
#295
Отправлено 10 Октябрь 2016 - 10:20
Цитата
Например в Поле 1 выбираем ААА, в Поле 2 устанавливается 111
Событие должно срабатывать только при изменении Поля 1.
Вычисление на событие изменения поля "Поле 1":
if ($line['Поле 1'] == "ААА") $line['Поле 2'] = 111;
Цитата
Никак, вид поля динамически изменить нельзя. В данном случае можно при выборе "Другое" показывать дополнительное текстовое поле, которое скрывается при других значениях списка.
#296
Отправлено 10 Октябрь 2016 - 17:24
if ($line['Поле 1'] == "ААА") $line['Поле 2'] = 111;
будет работать при сохранении или обновлении страницы, как это можно сделать через javascript, чтобы это происходило в режиме редактирования?
Сообщение отредактировал Аlex Jet: 10 Октябрь 2016 - 17:25
#297
Отправлено 11 Октябрь 2016 - 09:37
if (document.getElementById('value111').value == "ААА") document.getElementById('value222').value = 111;
111 и 222 заменяете на id соответствующих полей
#298
Отправлено 11 Октябрь 2016 - 15:09
Вот окончательный код, позволяющий изменять значение поля 2 в зависимости от значения поля 1, надеюсь кому то поможет сократить поиски
function onchange_{$one_field.id}() { // если поле 1 равно ААА, то в поле 2 установится 111 if (document.getElementById('value4581').value == "Значение ААА") document.getElementById('value5681').value = "Значение 111"; // если поле 2 равно БББ, то в поле 2 установится 222 if (document.getElementById('value4581').value == "Значение БББ") document.getElementById('value5681').value = "Значение 222"; } $(document).ready(onchange_{$one_field.id}); //функция срабатывает при загрузке страницы $('#value{$one_field.id}').change(onchange_{$one_field.id}); //функция срабатывает при изменении поля // 4581 - поле 1 // 5681 - поле 2
Сообщение отредактировал Аlex Jet: 11 Октябрь 2016 - 15:09
#299
Отправлено 11 Октябрь 2016 - 23:36
Нужно чтобы Кнопка 1 и Кнопка 2 были скрыты по умолчанию и показывались только при выполнении условия 1 или 2. Кнопки скрываются только в режиме редактирования, но после сохранения в режиме просмотра отображаются, несмотря на то, что условия не выполняются.
function onchange_{$one_field.id}() { if ( //условие 1 document.getElementById('value5511').value == "Передано" & document.getElementById('value4601').value != "" ) { //показываем Кнопка 1 document.getElementById("user_button_div_181").style.display = ''; document.getElementById("e_user_button_div_181").style.display = ''; } else if ( //условие 2 document.getElementById('value5511').value == "Выполнено" & document.getElementById('value4601').value != "" & document.getElementById('value5681').value == "Оплата мастеру" & document.getElementById('value4621').value != "0,00" ) { //показываем Кнопка 2 document.getElementById("user_button_div_101").style.display = ''; document.getElementById("e_user_button_div_101").style.display = ''; } else { //скрыть Кнопка 1 document.getElementById("user_button_div_181").style.display = 'none'; document.getElementById("e_user_button_div_181").style.display = 'none'; //скрыть Кнопка 2 document.getElementById("user_button_div_101").style.display = 'none'; document.getElementById("e_user_button_div_101").style.display = 'none'; } } // здесь задаем поведение кнопки во время изменения поля: addHandler(document.getElementById('value5511'), 'onchange', onchange_{$one_field.id}); addHandler(document.getElementById('value4601'), 'onchange', onchange_{$one_field.id}); addHandler(document.getElementById('value5681'), 'onchange', onchange_{$one_field.id}); addHandler(document.getElementById('value4621'), 'onchange', onchange_{$one_field.id}); addHandler(document.getElementById('value4631'), 'onchange', onchange_{$one_field.id}); // здесь задаем поведение кнопки при открытии страницы: $(document).ready(onchange_{$one_field.id});
#300
Отправлено 21 Октябрь 2016 - 08:36
function onchange_{$one_field.id}()
{
display_field(3400, document.getElementById('value{$one_field.id}').value=="Новая");
display_field(1690, document.getElementById('value{$one_field.id}').value=="Новая");
display_field(1700, document.getElementById('value{$one_field.id}').value=="Новая");
display_field(1710, document.getElementById('value{$one_field.id}').value=="Новая");
display_field(5401, document.getElementById('value{$one_field.id}').value=="В работе");
}
addHandler(document.getElementById('value{$one_field.id}'), 'onchange', onchange_{$one_field.id});
Со скрытием/отображением все прекрасно работает. Однако среди полей, которые скрыты при выборе в списке значения "В работе" есть поле обязательное к заполнению. Соответственно, когда поле скрыто, оно не заполнятся и при попытке сохранить запись выдается предупреждение, что не все обязательные поля заполнены и запись не сохраняется. Как-то можно решить эту проблему, кроме как сделать поле необязательным для заполнения? Спасибо.
Количество пользователей, читающих эту тему: 68
0 пользователей, 68 гостей, 0 анонимных