我正在使用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 :(得分: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()