2016-09-19 2 views
0

Я хочу, чтобы вызвать функцию яваскрипта, когда нажмите отправить button.I используется form_tag, но функция не получить triggered.I хотите что-то вроде следующего:form_tag OnComplete событие не работает

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

на это представить работая, но на полном не работает, пожалуйста, помогите мне?

+0

Там нет 'onComplete' вариант, насколько я помню. Вы должны приложить событие ajax: success в форме. –

+0

Я тоже пробовал для этого, но все же он не работает. Можете ли вы указать, как добавить ajax: success –

+0

Я новичок в rails –

ответ

0

Как вы используете form_tag с выносным: правда, что означает, что ваш сервер рельсы собирается отправить вам ответ в формате JS. Таким образом, вы можете назвать свою функцию следующими двумя способами:

1) response_to block: простейшее и простое решение.

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

2) js.erb файл:

для действия контроллера вы можете иметь файл «action_name.js.erb», и в этом файле вы можете позвонить вам функцию 'расслоение плотной end_form_request() непосредственно ,

Надеюсь, это поможет вам.

Обновлено:

action.js.erb

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

привет его рабочие благодарности, но он не принимает значения для, пожалуйста, скажите мне, когда я должен дать функцию –

+0

$ ("# well_table_section"). Html ("<% = escape_javascript (отрисовка частичная: 'well_table',: locals => {: params => @params})%>"); это мой action.js.erb здесь, если я вызываю js params значение не проходит –

+0

Я не понимаю, что именно вы спрашиваете, я понял, что «вы хотите передать значения формы этой функции» ... правильно? ?. Если да, проверьте обновленный ответ. –

0

Вы можете попробовать это

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

Я пробовал, но все же он не работает над Submit после того, как я хочу, когда вы заполните форму js функция должна вызывать –

+0

Что означают, когда вы заполняете форму? –

+0

<% = submit_tag "Enable", {: идентификатор => 'enable_button'}%> \t \t \t \t \t \t \t \t \t \t \t \t <% = submit_tag "Отключить", {: отключено => верно,: идентификатор => 'disable_button'}%> –

1

Там нет onComplete события в HTML форме. Check this

enter image description here

Если вы хотите, чтобы вызвать что-то после на Ajax вызова Complete. Используйте события Ajax, такие как успех, полный, ошибка.

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

Check this для всех рельсов событий ajax.

+0

Не могли бы вы изменить этот рельс? 2.3.2 код на рельсы 4.2 <% form_remote_tag (: url => {: action => 'show_table'},: method =>: GET,: update => {: success => 'well_table_section'},: loading => 'start_form_request()', : complete => 'end_form_request()') do -%> –

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> 
Смежные вопросы