Страница 1 из 1

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

Добавлено: 20 май 2022, 13:52
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], в записи сохраняются оба установленных значения.
Подскажите, есть ли возможность сохранять скрытые поля пустыми? Т.е. чтобы при переключении категории, значения в скрытых полях сохранялись пустыми (чистыми).

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

Добавлено: 20 май 2022, 14:20
Vladzimir
Можно через Jquery назначать пустое значение, если поле скрыто.

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

Добавлено: 20 май 2022, 15:04
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(''); 
}
Не работает.

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

Добавлено: 20 май 2022, 15:43
Vladzimir
Нужно не выбор скрывать, а значение самого поля делать пустым через .val('')

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

Добавлено: 21 май 2022, 07:34
era1fgg

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

$("#fields_335").on("change", function(e) { 
 $("#fields_336").val(''); 
});
этот вариант тоже не работает
гуглил, испробовал разные варианты. 3-й день ломаю голову.

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

Добавлено: 21 май 2022, 13:34
support
Для начал проверьте отрабатывает ли сама команда, например

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

$("#fields_335").on("change", function(e) { 
alert(1)
});
Далее, Классификация1 - это выпадающий список а не поле ввода, то есть в самом списке должно присутствовать пустое значение, или это может быть какое то значение по умолчанию.

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

Добавлено: 21 май 2022, 15:08
Vladzimir
Как вариант можно сделать поле заблокированным, тогда данные из нее не отправляются через форму.

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

.prop( "disabled", true )

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

Добавлено: 27 май 2022, 13:09
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 код условия выбора значения из многоуровневого списка?