Не удается очистить текстовое поле с переопределенным методом отправки, используемым для реализации ajax через Jquery 1.4

#javascript #jquery #html #erb #reset

#javascript #jquery #HTML #ошибка #Сброс

Вопрос:

У меня есть функция отправки сообщений в группу, которая работает с использованием AJAX через Jquery. Когда я нажимаю на кнопку «Опубликовать», которая является значением submit_tag, отображается javascript, и страница без перезагрузки отображает последнее опубликованное сообщение. В основном вызывается файл post_message.js.erb. Я использую следующий учебник для реализации того же:- http://railscasts.com/episodes/136-jquery

Код для post_message.js.erb выглядит следующим образом:-

 $("#new_post").before('<div id ="new_post"><%= escape_javascript(flash.delete(:notice)) %></div>');<!--TO-DO the flash messages aren't yet enabled/working-->
$("#latest_post").prepend("<%= @group_post.message %> by <%=  Investor.find(@group_post.post_by).first_name %> <div class=contentdispgrp> <%=  distance_of_time_in_words(@group_post.created_at,Time.now) %> ago</div> <br/><br/><hr/>");
$("#post_msg")[0].reset();
  

Часть формы, которая в противном случае отображала бы HTML и размещенное сообщение с перезагрузкой страницы, выглядит следующим образом:-

 <%form_for  :group_post, @group_post, :url => {:action => :post_message, :id => params[:id]},:html => {:multipart => 'true', :id => 'new_post'},:id => 'post_form' do |f| -%>
    Start Discussion:<label id="post_msg"><%=f.text_field :message%></label>
   <!--<%=f.file_field :photo%> -->
   <%=submit_tag "Post"  %></p>
<!--<input type="button" value="Reset Form" onClick="this.form.reset()" />-->
  <%end%>

<div id = "latest_post"> </div>
<%for a in @group_all_posts %>
<%= a.message %> by <%=  Investor.find(a.post_by).first_name %> <div class ="contentdispgrp" id="style_chck"> <%=  distance_of_time_in_words(a.created_at,Time.now) %> ago </div><br/><br/> <hr/>
<%end%>


</tr>
  

Я хочу также очистить текстовое поле вместе с уже реализованной выше функциональностью. Я предполагаю, что мне нужно как-то использовать метод Javascript reset , но где-то я использую его неправильно.

Пожалуйста, помогите мне с тем же.

Спасибо за вашу помощь..

[ПРАВИТЬ]

Код для post_message в контроллере моих групп.

 def post_message 
      @investor_group = InvestorGroup.find(params[:id])


      unless @current_user.is_an_existing_member_of_group(@investor_group)
        flash[:notice] = "Please join this group to participate in discussions"
        redirect_to :action => :show, :id => @investor_group and return # try to find out what exactly does this command do with return stmnt
      else
        @group_post = GroupPost.new(params[:group_post])
      end
      #@group_post = GroupPost.new(params[:group_post])

      investor_id = session['investor_id']
      @group_post.investor_group_id = @investor_group.id
      @group_post.post_by = investor_id
      if @group_post.message.blank?
         flash[:notice] = 'Post can't be blank.'
      end
      if @group_post.save
        flash[:notice] = 'Post was successfully created.'
       # redirect_to :action => :show, :id => params[:id] - removed after trying to implement ajax via jquery
      else
        flash[:notice] = 'Post was not successfully created.'
      end


      respond_to do |format|
        format.html {redirect_to :action => "show", :id => params[:id]}
        format.js
      end

  end
  

Ответ №1:

Я предполагаю, что вы хотите что-то вроде этого:

 $('#post_msg input').val('');
  

Это очистит значение поля ввода сообщения.

Комментарии:

1. Я думаю, что это сохранит значение, а не очистит его. Или это должно быть: .val(«»)? Это правда? 😉

2. Упс, Роксон, ты в ударе 😉

3. Не пей и не садись за руль! 😀 Теперь… Это намного лучше, @Gary! Вы только что заработали 1 😉

4. @Gary: Спасибо ..:), именно то, что я хотел … хотел бы я увидеть ответ, который вы опубликовали ранее.. который был исправлен @roXon, я думаю .. пропустил это ..:)

5. Это было $('#post_msg input').val(); до того, как Роксон исправил меня. Это ПРИВЕДЕТ к получению значения входных данных, а не к его установке. Итак, '' здесь важно очистить то, что находится внутри поля ввода, от пустой строки.