0

我正在使用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调用。

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

任何想法?

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

谢谢。

回答

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"); 
         } 
     }); 
    } 
+0

这需要.simpleImageCheck它...有没有办法做到这一点与纳入?另外,如果没有e.prevendefault();这不会执行双重提交吗? – user749798 2012-07-15 19:01:48

+0

我从来没有使用过simpleImageCheck插件,但它似乎应该可以执行以下操作 - '$('#pinform_candle')。simpleImageCheck({/images/candle.png', imageChecked:'/图片/ one.png”, afterCheck:功能(器isChecked){ 如果(器isChecked){ submit_candle_or_rose( “蜡烛”);} } });' – saihgala 2012-07-16 06:23:53

+0

你能接受我的反应,如果它回答您的问题? – saihgala 2012-08-23 07:33:01

0

如果你的表格是不是JS格式,使用提交:格式=>:伴随着的form_tag JS和尝试通过改变onclick事件this.form.submit()