Я пытаюсь реализовать валидацию в своей форме html, чтобы выделить входы формы с классом bootstrap has-error
, если пользователь вводит неверные данные в моем приложении rails. Я использую ajax с пользовательским data
объектом, который содержит сообщения об ошибках. До сих пор я придумал это:jQuery .closest() возвращает несколько результатов
application.js
jQuery.each(data.messages, function(i, val){
$("label").val(i).closest("form-group").addClass("has-error");
});
_account.html.erb
<div class="form-group">
<%= account_form.label(:label, "Label") %>
<%= account_form.text_field(:label, class: "form-control") %>
</div>
<div class="form-group">
<%= account_form.label(:iban, "Iban") %>
<%= account_form.text_field(:iban, class: "form-control", maxlength: 29, data: {toggle: "tooltip"}) %>
</div>
<div class="form-group">
<%= account_form.label(:swift, "Swift") %>
<%= account_form.number_field(:swift, class: "form-control", maxlength: 8, data: {toggle: "tooltip"}) %>
</div>
Например, i
= "swift"
и val
= "is blank"
, так что если пользователь предоставляет ярлык, но забывает о двух других, только "swift"
и "iban"
будет в i
.
Моя проблема заключается в том, что для каждого цикла .each
делает, .closest
возвращает все 3 дивы, так что я не могу управлять, чтобы выбрать один DIV, основанный на этикетке с .closest
Он возвращает три '.form-group' элементов, потому что вы выбрали * все *' элементы label' (из которых есть три) –
То, что я имел в виду, что каждый цикл выбирает все 3 div каждый раз, в то время как каждый цикл должен выбирать только его родительский div – SORRROW