Пользовательские флажки для проверки формы - Magento
У меня есть 2 поля флажка, и только одно из них должно быть обязательным (первое или второе)
Как я могу показать сообщение об ошибке, только если 2 флажка не установлены.
Можно ли это сделать с прототипом? или мне нужно искать решение с помощью jQuery?
Пользователь должен выбрать один или несколько вариантов из "Группы флажков 1" или "Группы флажков 2", но не варианты из 2 групп. Только необходимо выбрать одну группу
Правка2: для информации я использую https://amasty.com/customer-attributes.html и я хочу настроить сгенерированную форму...
А вот сгенерированный код полей моей формы:
<fieldset id="amcustomerattr66" class="amcustomerattr">
<span class="field-row" id="checkbox_group1">
<label for="checkbox_group1">Checkbox group1</label><div style="clear: both;"></div>
<div class="amorderattr_img_checkbox" style="float: left; clear: none; padding-right: 4px;"><div><input type="checkbox" class="" name="billing[amcustomerattr][checkbox_group1][]" id="checkbox_group1___30" value="30"> Option 1</div></div><div class="amorderattr_img_checkbox" style="float: left; clear: none; padding-right: 4px;"><div><input type="checkbox" class="" name="billing[amcustomerattr][checkbox_group1][]" id="checkbox_group1___31" value="31"> Option 2</div></div><div class="amorderattr_img_checkbox" style="float: left; clear: none; padding-right: 4px;"><div><input type="checkbox" class="" name="billing[amcustomerattr][checkbox_group1][]" id="checkbox_group1___32" value="32"> Option 3</div></div><input type="hidden" class="" name="amcustomerattr[checkbox_group1][]" id="checkbox_group1___0" value=""><div style="clear: both;"></div><div style="padding: 4px;"></div></span>
<script type="text/javascript">
var checkbox_group1ElementControl = {
selectAll: function() {
var sel = $("checkbox_group1");
for(var i = 0; i < sel.options.length; i ++) {
sel.options[i].selected = true;
}
return false;
},
deselectAll: function() {
var sel = $("checkbox_group1");
for(var i = 0; i < sel.options.length; i ++) {
sel.options[i].selected = false;
}
return false;
}
}
</script><span class="field-row" id="checkbox_group2">
<label for="checkbox_group2">Checkbox group2</label><div style="clear: both;"></div>
<div class="amorderattr_img_checkbox" style="float: left; clear: none; padding-right: 4px;"><div><input type="checkbox" class="" name="billing[amcustomerattr][checkbox_group2][]" id="checkbox_group2___33" value="33"> Option 4</div></div><div class="amorderattr_img_checkbox" style="float: left; clear: none; padding-right: 4px;"><div><input type="checkbox" class="" name="billing[amcustomerattr][checkbox_group2][]" id="checkbox_group2___34" value="34"> Option 5</div></div><input type="hidden" class="" name="amcustomerattr[checkbox_group2][]" id="checkbox_group2___0" value=""><div style="clear: both;"></div><div style="padding: 4px;"></div></span>
<script type="text/javascript">
var checkbox_group2ElementControl = {
selectAll: function() {
var sel = $("checkbox_group2");
for(var i = 0; i < sel.options.length; i ++) {
sel.options[i].selected = true;
}
return false;
},
deselectAll: function() {
var sel = $("checkbox_group2");
for(var i = 0; i < sel.options.length; i ++) {
sel.options[i].selected = false;
}
return false;
}
}
</script>
<script type="text/javascript">
var fav_colorElementControl = {
selectAll: function() {
var sel = $("fav_color");
for(var i = 0; i < sel.options.length; i ++) {
sel.options[i].selected = true;
}
return false;
},
deselectAll: function() {
var sel = $("fav_color");
for(var i = 0; i < sel.options.length; i ++) {
sel.options[i].selected = false;
}
return false;
}
}
</script><span class="field-row" style="display: none;">
<label for="company_name">Name of the company</label><div style="clear: both;"></div>
<input id="company_name" name="billing[amcustomerattr][company_name]" value="" class=" input-text" type="text">
<div style="padding: 4px;"></div></span>
<span class="field-row" style="display: none;">
<label for="company_specialization">Company specialization</label><div style="clear: both;"></div>
<textarea id="company_specialization" name="billing[amcustomerattr][company_specialization]" class=" textarea" rows="2" cols="15"></textarea><div style="padding: 4px;"></div></span>
</fieldset>
1 answers
Предположим, у вас есть два таких флажка:
<input type="checkbox" name="my_checkbox[1]" value="1" />
<input type="checkbox" name="my_checkbox[2]" value="2" />
Вы можете использовать класс по умолчанию validate-one-required-by-name
, чтобы позволить проверке прототипа по умолчанию проверить один необходимый параметр:
<input type="checkbox" name="my_checkbox[1]" value="1" class="validate-one-required-by-name" />
<input type="checkbox" name="my_checkbox[2]" value="2" class="validate-one-required-by-name" />
Пожалуйста, обратите внимание, что имя ввода имеет важное значение. Имя должно быть массивом, как в моем примере, чтобы проверка работала правильно.
В вашем случае вам придется добавить этот класс к 5 входным данным.
Кроме того, для правильного использования проверки вам необходимо чтобы добавить этот маленький JS после вашей формы:
<script type="text/javascript">
//<![CDATA[
var myCustomForm= new VarienForm('custom-form');
//]]>
</script>
Где custom-form
- идентификатор вашего элемента <form>
.