

Показ/скрытие полей через 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});
Со скрытием/отображением все прекрасно работает. Однако среди полей, которые скрыты при выборе в списке значения "В работе" есть поле обязательное к заполнению. Соответственно, когда поле скрыто, оно не заполнятся и при попытке сохранить запись выдается предупреждение, что не все обязательные поля заполнены и запись не сохраняется. Как-то можно решить эту проблему, кроме как сделать поле необязательным для заполнения? Спасибо.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных