表格提交两次

时间:2012-07-14 19:46:45

标签: jquery ruby-on-rails ruby-on-rails-3 forms double-submit-problem

我正在使用simpleImageCheck插件,由于某种原因,表单会提交两次。

以下是我的javascript:

<script type="text/javascript" language="javascript">
$(function() {
$('#pin_candle').simpleImageCheck({
    image: '/images/candle.png',
    imageChecked: '/images/one.png'
  })
$('#pin_rose').simpleImageCheck({
    image: '/images/rose.png',
    imageChecked: '/images/one.png'
  })
});
</script>

这是我的铁轨形式:

<%= form_for([@posts, @pin], :remote => true, :html => { :id => 'pinform' }) do |f| %>

  <%= f.check_box :candle, :onChange => "this.form.submit_button.click();" %>

  <%= f.check_box :rose, :onChange => "this.form.submit_button.click();" %>

  <%= f.submit :id => 'submit_button', :style => 'display: none;' %>
<% end %>

我需要使用this.form.submit_button.click();因为当我只使用标准this.form.submit();它以html提交,而不是js,因此rails不会让我进行ajax调用。

另一个问题是如果我在提交后禁用表单,我有其他复选框,然后另一个复选框不起作用。

有什么想法吗?

有没有办法停止双重提交?

谢谢。

2 个答案:

答案 0 :(得分:0)

将您的观点更改为 -

<%= form_for([@posts, @pin], :remote => true, :html => { :id => 'pinform' }) do |f| %>
  <%= f.check_box :candle %>
  <%= f.check_box :rose %>
  <%= f.submit :id => 'submit_button'%>
<% end %>

并在脚本块中

 $("#pinform_candle").change(function () {
           submit_candle_or_rose("candle");
 });

 $("#pinform_rose").change(function () {
           submit_candle_or_rose("rose");
 });


 function submit_candle_or_rose(candle_or_rose)
 {
        $.ajax({
                        url: "/posts/pin?format=js&candle_or_rose="+ candle_or_rose,
                        beforeSend: function() {
                               //do something
                        },
                        success: function() {
                               alert("saved successfully");
                        },
                        error: function() {
                               alert("something failed");
                        }
         });
  }

答案 1 :(得分:0)

如果您的表单未以js格式提交,请使用:format =&gt; :js以及form_tag并尝试将onclick事件更改为this.form.submit()