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


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


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

#281 CbCoder

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

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

Отправлено 01 Март 2016 - 17:20

Все ясно. В подтаблицах JS код у вас работать не будет, он там неактивен. Одна из причин - другая структура полей, вторая - в разных строках могут быть разные значения, тогда как столбец один на всех.

#282 lexer92

    Новичок

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

Отправлено 02 Март 2016 - 09:53

понятно, спасибо за помощь.
буду пробовать сделать чуть иначе тогда.

Сообщение отредактировал lexer92: 02 Март 2016 - 10:06


#283 Dinak

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

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 02 Март 2016 - 10:39

document.getElementById('main111').value = 1; // 111 заменяете на id нужного поля

Данный способ реализации обязательного для заполнения поля не работает в списках со множественным выбором, как решить проблему?

Сообщение отредактировал Dinak: 02 Март 2016 - 10:42


#284 CbCoder

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

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

Отправлено 02 Март 2016 - 11:21

Цитата

Данный способ реализации обязательного для заполнения поля не работает в списках со множественным выбором

Там не работает не "способ реализации", а сама обязательность, очевидно по причине какого-то бага. Отправьте заявку в ТП с просьбой его исправить.

#285 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 156 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 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);
				    }
		    });
Кнопка сохранить появляется. Ошибок в консоли нет. Что не так?

#286 alexrus

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

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

Отправлено 07 Май 2016 - 06:22

Здравствуйте. Подскажите есть возможность скрыть поле (Паспорт) в режиме добавления записи в зависимости от значения другого поля (Транспортная компания - поле связи).

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

  • Прикрепленное изображение: 2016-05-07_12-11-42.png

Сообщение отредактировал alexrus: 07 Май 2016 - 06:31


#287 barakus

    Участник

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

Отправлено 21 Май 2016 - 15:02

Добрый день. Сделал все как написано в шапке, со скрытием и отображением все работает. Но есть поле, обязательное для заполнения, оно по умолчанию скрыто и если оно не открывается(и не заполняется соответственно), то запись не сохраняется. С этим можно что-то сделать? кроме как сделать поле необязательным для заполнения.

#288 vinogradov.sa

    Новичок

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

Отправлено 07 Июль 2016 - 11:56

Друзья, такой вопрос: Есть форма, которую нужно сделать динамическую (не по сохранению). Скрытие и отображение полей в js происходит по следующему коду при изменении в поле типа "список" (отображается, если выбрано какое-то значение):

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 CbCoder

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

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

Отправлено 07 Июль 2016 - 12:26

Теоретически можно, через ajax. Но сам не делал ни разу. Готовых инструментов/функций в КБ пока нет на данный счет.

#290 vinogradov.sa

    Новичок

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

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

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

Теоретически можно, через ajax. Но сам не делал ни разу. Готовых инструментов/функций в КБ пока нет на данный счет.

Спасибо за ответ, понял. Про ajax и думал, надеялся, что уже была такая практика :rolleyes:
Возможно ли, в таком случае, кодом (php или js все равно) по событию изменения поля написать, чтобы произошло автоматическое сохранение и обновление страницы (чтобы пользователю не нужно было нажимать кнопку "сохранить", а потом снова "редактировать")?

#291 CbCoder

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

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

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

Я думаю можно, на кнопке Сохранить висит код в виде вызова функции, его можно просто продублировать в вашем коде по событию.

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

#292 vinogradov.sa

    Новичок

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

Отправлено 08 Июль 2016 - 12:18

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

Я думаю можно, на кнопке Сохранить висит код в виде вызова функции, его можно просто продублировать в вашем коде по событию. а потом снова "редактировать" А для этого необходимо установить у скрытого элемента edit_mode значение 1, перед тем как вызывать код сохранения.

Благодарю, все получилось.

#293 RangeVision

    Новичок

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

Отправлено 13 Июль 2016 - 11:54

Смог сделать по вашему обновленному скрипту в 1ом посте скрытие-отображение полей, когда создаешь новую запись из аккаунта

Сообщение отредактировал RangeVision: 25 Июль 2016 - 15:49


#294 Аlex Jet

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

  • Пользователи
  • PipPipPip
  • 38 сообщений
  • Пол:Мужчина
  • Город:Уфа

Отправлено 04 Октябрь 2016 - 19:17

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

Например в Поле 1 выбираем ААА, в Поле 2 устанавливается 111

Событие должно срабатывать только при изменении Поля 1.

----

Как сделать, чтобы при выборе варианта "Другое" в поле типа список, в это поле можно было ввести текст самостоятельно?

Сообщение отредактировал Аlex Jet: 06 Октябрь 2016 - 23:50

Белый сервис - сервисный центр, работающий на одной из лучших CRM.

#295 CbCoder

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

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

Отправлено 10 Октябрь 2016 - 10:20

Цитата

Как при выборе значения из списка изменить значение другого поля?
Например в Поле 1 выбираем ААА, в Поле 2 устанавливается 111
Событие должно срабатывать только при изменении Поля 1.

Вычисление на событие изменения поля "Поле 1":

if ($line['Поле 1'] == "ААА") $line['Поле 2'] = 111;

Цитата

Как сделать, чтобы при выборе варианта "Другое" в поле типа список, в это поле можно было ввести текст самостоятельно?

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

#296 Аlex Jet

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

  • Пользователи
  • PipPipPip
  • 38 сообщений
  • Пол:Мужчина
  • Город:Уфа

Отправлено 10 Октябрь 2016 - 17:24

Вычисление

if ($line['Поле 1'] == "ААА") $line['Поле 2'] = 111;

будет работать при сохранении или обновлении страницы, как это можно сделать через javascript, чтобы это происходило в режиме редактирования?

Сообщение отредактировал Аlex Jet: 10 Октябрь 2016 - 17:25

Белый сервис - сервисный центр, работающий на одной из лучших CRM.

#297 CbCoder

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

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

Отправлено 11 Октябрь 2016 - 09:37

Извиняюсь, не сразу заметил что тема по JS. Тогда используете стандартные примеры кода в начале темы, только заменяете скрытие/отображение поля на заполнение:

if (document.getElementById('value111').value == "ААА") document.getElementById('value222').value = 111;

111 и 222 заменяете на id соответствующих полей

#298 Аlex Jet

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

  • Пользователи
  • PipPipPip
  • 38 сообщений
  • Пол:Мужчина
  • Город:Уфа

Отправлено 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

Белый сервис - сервисный центр, работающий на одной из лучших CRM.

#299 Аlex Jet

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

  • Пользователи
  • PipPipPip
  • 38 сообщений
  • Пол:Мужчина
  • Город:Уфа

Отправлено 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});

Белый сервис - сервисный центр, работающий на одной из лучших CRM.

#300 VBochkov

    Новичок

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

Отправлено 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});

Со скрытием/отображением все прекрасно работает. Однако среди полей, которые скрыты при выборе в списке значения "В работе" есть поле обязательное к заполнению. Соответственно, когда поле скрыто, оно не заполнятся и при попытке сохранить запись выдается предупреждение, что не все обязательные поля заполнены и запись не сохраняется. Как-то можно решить эту проблему, кроме как сделать поле необязательным для заполнения? Спасибо.





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

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