Мне нужно заполнить как минимум одно из трех полей в моей форме. Поэтому я использовал проверку петрушки для элемента div, охватывающего эти три поля. Работает очень хорошо, единственная проблема в том, что при ошибке он не фокусируется, как обычные входные данные.
Вот еще несколько подробностей c (это синтаксис haml):
#phone-fields.parsley-group-validate{data:{'parsley-one-child-required' => "mobile_phone|home_phone|work_phone",parsley_validate_if_empty:'true'
= f.input :mobile_phone, as: :phone
= f.input :home_phone, as: :phone
= f.input :work_phone, as: :phone
, затем в моем javascript файле я добавляю пользовательскую oneChildRequired
проверку
Parsley.addValidator('oneChildRequired', {
requirementType: 'string', //expect format of string t be input ids separated by '|' e.g. "mobile_phone|home_phone|work_phone" not sure how to allow varying number of requirements so this will suffice
validateString: function(_value, requirement, instance) {
var multiSelector = "#enrolment_form_"+requirement.replace(/\|/g, ', #enrolment_form_');// gives multi selector like '"#enrolment_form_mobile_phone, #enrolment_form_home_phone, #enrolment_form_work_phone"'
var $inputs = instance.$element.find(multiSelector);
var valid = false;
$inputs.each(function(i){
if($(this).val()){
valid = true; // one input has a value
return false; //break out of the loop
}
});
// no input has the target value (requirement2)
return valid;
}
});