Правила отображения полей, очистить скрытые поля

Все вопросы/проблемы по установке и использовании.
Ответить
era1fgg
Сообщения: 28
Зарегистрирован: 26 фев 2020, 14:02
Имя: Era
Откуда: Astana

Правила отображения полей, очистить скрытые поля

Сообщение era1fgg »

Добрый день,
В сущности имеются следующие поля:
1) Категория [334] (переключатели - глобальный список)
--Первая [441]
--Вторая [442]
--Третья [443]
2) Классификация1 [335] (выпадающий список - глобальный список)
----Значение 1 [451]
----Значение 2 [452]
3) Классификация2 [336] (выпадающий список - глобальный список)
----Значение 1 [461]
----Значение 2 [462]
4) Классификация3 [337] (выпадающий список -глобальный список)
----Значение 1 [471]
----Значение 2 [472]
5) Вес [511] (числовое поле)
6) Объем [512] (числовое поле)

Настроены правила отображения полей:
1) При выборе Первой категории [441] отображается поле Классификация1 [335], скрываются поля Классификация2 [336] и Классификация3 [337].
2) При выборе Второй категории [442] отображается поле Классификация2 [336], скрываются поля Классификация1 [335] и Классификация3 [337].
3) При выборе Третей категории [443] отображается поле Классификация3 [337], скрываются поля Классификация1 [335] и Классификация2 [336].
Далее в зависимости от выбора соответствующих значений в классификациях отображаются и скрываются другие поля Вес[511] , Объем[512] и т.д.

Проблема в том, что в форме добавления записи в сущность если выбрать Вторую категорию [442] и установить любое значение поля Классификация2 [336], а потом переключить на первую категорию[334] и установить любое значение из поля Классификация1 [335], в записи сохраняются оба установленных значения.
Подскажите, есть ли возможность сохранять скрытые поля пустыми? Т.е. чтобы при переключении категории, значения в скрытых полях сохранялись пустыми (чистыми).
Vladzimir
Сообщения: 102
Зарегистрирован: 05 май 2022, 20:12
Имя: Влад Зимир
Откуда: Kyiv

Re: Правила отображения полей, очистить скрытые поля

Сообщение Vladzimir »

Можно через Jquery назначать пустое значение, если поле скрыто.
era1fgg
Сообщения: 28
Зарегистрирован: 26 фев 2020, 14:02
Имя: Era
Откуда: Astana

Re: Правила отображения полей, очистить скрытые поля

Сообщение era1fgg »

Так выглядит часть html кода моего поля для классификации2

Код: Выделить всё

<div class="form-group form-group-336 form-group-fieldtype_dropdown" style="display: block;">
	<label class="col-md-3 control-label" for="fields_336">
		<span class="required-label">*</span>Классификация2</label>
	<div class="col-md-9">	
		<div id="fields_336_rendered_value">
		<select name="fields[336]" id="fields_336" class="form-control input-large field_336 required chosen-select" data-placeholder="Выберите значение" style="display: none;">
		<option value="">Выберите значение</option>
		<option value="461">Значение 1</option>
		<option value="462">Значение 2</option>
		</select>
		<div class="chosen-container chosen-container-single" title="" id="fields_336_chosen" style="width: 320px;">
			<a class="chosen-single">
			<input class="chosen-focus-input" type="text" autocomplete="off">
			<span>Значение 2</span>
			<div><b></b></div>
			</a>
<div class="chosen-drop">
  <div class="chosen-search">
    <input class="chosen-search-input" type="text" autocomplete="off">
  </div>
  <ul class="chosen-results">
  <li class="active-result" data-option-array-index="0">Выберите значение</li>
  <li class="active-result" data-option-array-index="1">Значение 1</li>
  <li class="active-result result-selected" data-option-array-index="2">Значение 2</li>
  </ul>
</div>
		</div>
          <label id="fields_336-error" class="error" for="fields_336" style="display: none;"></label>
          <script>
              $("#fields_336").on("change", function(e) { 
                  $("#fields_336-error").hide(); 
              });
          </script>
		  </div>
	    </div>			
</div>
Пробую добавить JavaScript для очистки поля в настройках формы

Код: Выделить всё

$("#fields_335").on("change", function(e) { 
 $("#fields_336_chosen a.chosen-single span").html(''); 
}
Не работает.
Vladzimir
Сообщения: 102
Зарегистрирован: 05 май 2022, 20:12
Имя: Влад Зимир
Откуда: Kyiv

Re: Правила отображения полей, очистить скрытые поля

Сообщение Vladzimir »

Нужно не выбор скрывать, а значение самого поля делать пустым через .val('')
era1fgg
Сообщения: 28
Зарегистрирован: 26 фев 2020, 14:02
Имя: Era
Откуда: Astana

Re: Правила отображения полей, очистить скрытые поля

Сообщение era1fgg »

Код: Выделить всё

$("#fields_335").on("change", function(e) { 
 $("#fields_336").val(''); 
});
этот вариант тоже не работает
гуглил, испробовал разные варианты. 3-й день ломаю голову.
Аватара пользователя
support
Техническая поддержка
Сообщения: 7661
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Правила отображения полей, очистить скрытые поля

Сообщение support »

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

Код: Выделить всё

$("#fields_335").on("change", function(e) { 
alert(1)
});
Далее, Классификация1 - это выпадающий список а не поле ввода, то есть в самом списке должно присутствовать пустое значение, или это может быть какое то значение по умолчанию.
Vladzimir
Сообщения: 102
Зарегистрирован: 05 май 2022, 20:12
Имя: Влад Зимир
Откуда: Kyiv

Re: Правила отображения полей, очистить скрытые поля

Сообщение Vladzimir »

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

Код: Выделить всё

.prop( "disabled", true )
era1fgg
Сообщения: 28
Зарегистрирован: 26 фев 2020, 14:02
Имя: Era
Откуда: Astana

Re: Правила отображения полей, очистить скрытые поля

Сообщение era1fgg »

Спасибо большое, в итоге как то так реализовано:

Код: Выделить всё

$("#uniform-feilds_334_441 span").on("change"), function(e) {
	$("fields_335").prop( "disabled", false);
	$("fields_336").prop( "disabled", true);
	$("fields_337").prop( "disabled", true);
});
$("#uniform-feilds_334_442 span").on("change"), function(e) {
	$("fields_335").prop( "disabled", true);
	$("fields_336").prop( "disabled", false);
	$("fields_337").prop( "disabled", true);
});
$("#uniform-feilds_334_443 span").on("change"), function(e) {
	$("fields_335").prop( "disabled", true);
	$("fields_336").prop( "disabled", true);
	$("fields_337").prop( "disabled", false);
});
Еще вопрос, как скрыть поля при выборе значения из поля многоуровневый список. Есть решение? Я в javascript не особо шарю. Как выглядит javascript код условия выбора значения из многоуровневого списка?
Ответить