Я создаю форму, которая использует замену для heapBox (https://github.com/FilipBartos/heapbox) для элементов <select>
, а также использует jQuery Validate для проверки формы.Есть ли способ проверить элементы Heapbox с помощью jQuery Validate?
jQuery Validate работает только с элементами формы с атрибутом имени, поэтому, поскольку heapbox заменяет элементы <select>
на div, его не распознается в процессе проверки.
У меня есть сообщения об ошибках, которые добавляются к каждому входу, а также общее резюме ошибок, которые появляются при недопустимом представлении формы. Можно ли написать что-то в javascript, который не использует плагин, только для элементов heapbox? Я не уверен, что знаю, с чего начать.
Я знаю, что могу вернуться к использованию элементов по умолчанию <select>
и ограничить контроль над стилями, но я действительно хотел посмотреть, есть ли способ обойти это.
Вот мой код:
<form class="form" id="register-form">
<div class="form-group">
<div class="form-fields">
<label>Firstname</label>
<input type="text" name="firstname" required/>
</div>
<div class="form-fields">
<label>Lastname</label>
<input type="text" name="lastname" required/>
</div>
<div class="form-fields">
<label>Email address</label>
<input type="email" name="email" required/>
</div>
<div class="form-fields">
<label>Confirm email address</label>
<input type="email" name="email_again" required/>
</div>
<div class="form-fields">
<label>Telephone</label>
<input type="tel" name="telephone" required/>
</div>
<div class="form-fields">
<label>Mobile number</label>
<input type="tel" name="mobile" required/>
</div>
<div class="form-fields">
<label>How did you hear about us?</label>
<select class="custom-select" name="findUs" required>
<option value="default">Please select from the following...</option>
<option value="Option 1">option 1</option>
<option value="Option 2">option 2</option>
<option value="Option 3">option 3</option>
<option value="Option 4">option 4</option>
<option value="Option 5"> option 5</option>
</select>
</div>
</div>
</form>
$(".custom-select").heapbox();
var submitted = false;
var validator = jQuery("#register-form").validate({
showErrors: function(errorMap, errorList) {
var summary = "";
if (submitted) {
var summary = "";
jQuery.each(errorList, function() {
summary += "<li><label for='"+ this.element.name;
summary += "' class='formError'>" + this.message + "</label></li>"; });
jQuery("#error-messages").show();
jQuery("#error-messages").find('.error-list ul').html(summary);
submitted = false;
}
this.defaultShowErrors();
},
invalidHandler: function(form, validator) { submitted = true; },
onfocusout: function(element) { this.element(element); },
errorClass: "error",
rules: {
},
messages: {
}
});
Спасибо заранее.