Показать сообщение отдельно
  #1 (permalink)  
Старый 27.10.2013, 15:09
Новичок на форуме
Отправить личное сообщение для Tkas Посмотреть профиль Найти все сообщения от Tkas
 
Регистрация: 27.10.2013
Сообщений: 2

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

Последний раз редактировалось Tkas, 27.10.2013 в 17:45.
Ответить с цитированием