Здравствуйте. Реализую дерево комментариев, нужна проверка, что пользователь ввел текст в поле для ввода комментария. Как сделать проверку только для одного поля (на котором пользователь попытался отправить пустой комментарий), а не для всех полей ввода, которые есть на странице (к сожалению автоматически проверяются на пустоту все поля)?
Вот html.erb, где находится форма
<div class="margin-comment">
<%= form_for код-код-код, remote: true do |f| %>
<div class="f">ответить
<div class="answer">
<div class="form-group">
<%= f.label :text, 'Ваш ответ' %>
<%= f.text_field :text, class: 'form-control' %>
</div>
<%= f.submit 'Ответить', class: 'btn btn-default' %>
</div>
</div>
<% end %>
</div>
<span></span>
Вот код jQuery:
$(document).ready(function() {
$("input[type=submit]").click(function(e) {
if ($(".form-control").val() == "") {
$("span").text("Вы не ввели текст!").show().fadeOut(5500);
e.preventDefault();
}
});
});
Пробовал указывать this, но так ничего не работает.
UPDATE:
Указал this в двух местах
$("form").submit(function(e) {
if ($(".form-control", this).val() == "") {
$("span", this).text("Вы не ввели текст!").show().fadeOut(5500);
e.preventDefault();
}
});
И подправил html.erb, тег span внес в форму.
Однако появились новые проблемы: сворачивание и разворачивание формы для ввода реализовано через jQuery, вот код:
$(document).ready(function() {
$(".answer").hide();
$(".f").click(function(e) {
if(e.target == this) {
$(".answer", this).toggle();
}
});
Когда я разворачиваю любую из форм, и нажимаю на submit независимо от того ввел я текст или нет, то автоматически разворачиваются все формы! И свернуть их обратно без перезагрузки страницы уже нельзя! Если попытаться отправить пустой текст из этих полей, то js код, который должен проверить наличие текста в поле - не выполняется. Но отправка непустых комментариев работает. В чем может быть проблема?
UPDATE 2
Забыл сказать: добавление комментариев происходит через Ajax. Вот код:
$("#comments").html("<%=j render partial: 'comments/comment', collection: @post.comments %>");