Bangaru Narayana
Bangaru Narayana

Reputation: 3

form_tag onComplete event not work

I want to call a javascript function when click the submit button.I used form_tag , but the function did not get triggered.I want something like the following:

<%= 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 %>

on submit is working but on complete is not working please help me?

Upvotes: 0

Views: 517

Answers (4)

Tushar H
Tushar H

Reputation: 805

As you are using form_tag with remote:true, which means your rails server is going to send you response in JS format. So you can call your function with following two ways:

1) respond_to block: simplest and easy solution.

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

2) js.erb file:

for your controller action you can have "action_name.js.erb" file, and in that file you can call you js function 'end_form_request()' directly.

Hope it helps you.

Updated:

action.js.erb

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

Upvotes: 0

Charan Kumar Borra
Charan Kumar Borra

Reputation: 282

As per your request I converted your requirement into Rails 4

This is form tag

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

When you added the show_table_job_plate_path in the form you don't need to method: :GET

After the form you have to add this script.

<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>

Upvotes: 0

Charan Kumar Borra
Charan Kumar Borra

Reputation: 282

There is no onComplete event on HTML Form. Check this

enter image description here

If you want to trigger something after on Ajax Call Complete. Use Ajax events like success, complete, error.

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

Check this for all rails ajax events.

Upvotes: 1

Harry Bomrah
Harry Bomrah

Reputation: 1668

You can try this

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

Upvotes: 0

Related Questions