Получение текущего поля ввода формы
Здравствуйте. Реализую дерево комментариев, нужна проверка, что пользователь ввел текст в поле для ввода комментария. Как сделать проверку только для одного поля (на котором пользователь попытался отправить пустой комментарий), а не для всех полей ввода, которые есть на странице (к сожалению автоматически проверяются на пустоту все поля)?
Вот 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 %>");
|
Цитата:
Попробуйте следующим образом:
$(this).parent().find('.form-control').val()
|
Цитата:
Ах да, забыл сказать: добавление комментариев происходит через Ajax. |
| Часовой пояс GMT +3, время: 04:28. |