我在提交表单时遇到阻止页面重新加载的问题。
我的 HTML:
<%= form_for @foo, html: {multipart: true}, remote: true do |f| %>
<%= f.check_box :bar, :id => "bar_id", :onchange => "submit_function(this.form)" %>
<% end %>
我的 JavaScript:
function submit_function(form){
form.submit(function (ev) {
ev.preventDefault();
});
}
我的 Controller :
def update
// awesome things for update
respond_to do |format|
format.html { redirect_to request.referrer }
format.js {}
end
end
单击复选框时,将触发 JavaScript。 “form.submit”将表单发送到 Controller ,但在这种情况下,整个页面都会重新加载。我想阻止这种重新加载。
我也尝试过这个,但是页面也会重新加载。
function submit_function(form){
form.submit(function () {
$.ajax({
type: this.method,
url: this.action,
data: $(this).serialize()
});
return false;
});
}
是否需要之前更改“提交功能”,还是通过按下复选框来更改?
我现在已经尝试了一些东西。现在邀请页面不再是新的,但模型已更新。
function submit_function(form) {
$.ajax({
type: form.method,
url: form.action,
data: $(form).serialize()
});
return false;
}
现在我在更新已更改的部分时遇到问题。我怎样才能用js做到这一点?
好的,我明白了。请求将在js中发送,不再触发页面重新加载。我使用 javascript 编辑了复选框。
最佳答案
似乎和这个情况很相似:AJAX rails check box using javascript .submit()
他们所做的是重新定义表单提交,改变行为。
作为基本建议:使用相当不引人注目的 JS 而不是内联 onchange 事件
关于javascript - 在 Rails 中提交表单,无需重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32971329/