form_tag onComplete事件不起作用

时间:2016-09-19 09:01:03

标签: javascript ruby-on-rails

我想在单击提交按钮时调用javascript函数。我使用了form_tag,但函数没有被触发。我想要类似以下内容:

<%= form_tag show_table_job_plate_path, :onSubmit => 'start_form_request(); ' ,:onComplete  => 'end_form_request();' ,:update => { :success => 'well_table_section' },:remote => true, method: :GET  do %>

提交正在工作但完成后无效请帮帮我?

4 个答案:

答案 0 :(得分:1)

HTML表单上没有onComplete个事件。 Check this

enter image description here

如果您想在Ajax Call Complete之后触发某些内容。使用Ajax事件,如成功,完成,错误。

$("#yourform").bind('ajax:complete', function(data, status, xhr) {
   //Your On Complete Code
});
所有rails ajax事件的

Check this

答案 1 :(得分:0)

你可以试试这个

$("#your_form_id").on("ajax:success", function(xhr,data){
    ... //your complete function here.
})

答案 2 :(得分:0)

根据您的要求,我将您的要求转换为Rails 4

这是表格标签

<%= form_tag show_table_job_plate_path, remote: true, html: { onSubmit: 'start_form_request();', id: 'yourForm' }  do %>

当您在表单中添加show_table_job_plate_path时,您不需要method: :GET

在表单之后,您必须添加此脚本。

<script>
  $(document).ready(function(){
    $('#yourForm').on('ajax:complete', function(e, data, status, xhr){
        // Write onComplete Code
      end_form_request();

    }).on('ajax:success',function(e, xhr, status, error){

        // Write onSuccess Code
      well_table_section();

    }).on('ajax:error',function(e, xhr, status, error){
      // Write onError Code


    });
  });
</script>

答案 3 :(得分:0)

当您使用带有remote:true的form_tag时,这意味着您的rails服务器将以JS格式向您发送响应。因此,您可以通过以下两种方式调用您的函数:

1)respond_to block:最简单易用的解决方案。

respond_to do |format|
    format.js { render :js => "end_form_request();" }
end

2)js.erb文件:

对于您的控制器操作,您可以拥有&#34; action_name.js.erb&#34;文件,在那个文件中你可以叫你js function&#39; end_form_request()&#39;直接

希望它对你有所帮助。

<强>更新

<强> action.js.erb

$("#well_table_section").html("<%= escape_javascript(render partial: 'well_table', :locals => { :params => @params } ) %>");
end_form_request("<%= @params %>");