我想在单击提交按钮时调用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 %>
提交正在工作但完成后无效请帮帮我?
答案 0 :(得分:1)
HTML表单上没有onComplete
个事件。 Check this
如果您想在Ajax Call Complete之后触发某些内容。使用Ajax事件,如成功,完成,错误。
$("#yourform").bind('ajax:complete', function(data, status, xhr) {
//Your On Complete Code
});
所有rails ajax事件的
答案 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 %>");