【问题标题】:Unable to clear text field with overridden submit method used for ajax implementation via Jquery 1.4无法通过 Jquery 1.4 使用用于 ajax 实现的重写提交方法清除文本字段
【发布时间】:2011-05-17 08:51:27
【问题描述】:

我具有通过 Jquery 向使用 AJAX 的组发布消息的功能。当我单击作为 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

【问题讨论】:

    标签: javascript jquery html erb reset


    【解决方案1】:

    我假设你想要这样的东西:

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

    这将清除消息输入框的值。

    【讨论】:

    • 我认为这会抓住价值,而不是清空它。或者应该是: .val("") ?真的吗? ;)
    • 哎呀,roXon,你在球上;)
    • 不要酒后驾车! :D 现在...好多了@Gary!你刚刚获得了 +1 ;)
    • @Gary:谢谢..:),正是我想要的...希望我能看到您之前发布的答案..我猜@roXon 已经纠正了..错过了在那..:)
    • 在 roXon 纠正我之前是$('#post_msg input').val();。这将获取输入的值,而不是设置它。所以这里的''很重要,要把输入框里面的内容清空成空字符串。
    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 2021-03-29
    相关资源
    最近更新 更多