Получение текущего поля ввода формы
Здравствуйте. Реализую дерево комментариев, нужна проверка, что пользователь ввел текст в поле для ввода комментария. Как сделать проверку только для одного поля (на котором пользователь попытался отправить пустой комментарий), а не для всех полей ввода, которые есть на странице (к сожалению автоматически проверяются на пустоту все поля)?
Вот 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, время: 19:02. |