假设:
<%=form_for [:project, @note], :remote => true do |f| %>
我想创建一个jquery绑定,每隔几秒自动保存一次。我不担心时间部分,只是如何使用jquery自动提交表单(即,不提交用户点击按钮。)
我尝试了这个,但它没有用。建议?
$('form[data-remote]').live('submit', function (e) {
alert(1);
e.preventDefault();
});
谢谢!
答案 0 :(得分:4)
所以你说的是像Autosave这样的东西,对吧?
也许你想为此指定一个Javascript间隔。一个例子可能是:
var autosave = window.setInterval("autosaveForm()", 1000);
function autosaveForm() {
$('form[data-remote]').submit();
}
这样做是每秒呼叫autosaveForm()
并提交表单。要停止自动保存,您可以像这样使用clearInterval
:
window.clearInterval(autosave);
我希望这会有所帮助。
答案 1 :(得分:2)
$('form[data-remote]').submit()
将提交表单。
答案 2 :(得分:0)
从setInterval开始:
setInterval(transmit, 3000);
调用此功能:
function transmit(){
// get the form field data
var params = {
formField1:$("input#formField1").val(),
formField2:$("input#formField2").val()
}
// make the ajax call
var url = "/controller/action";
$.post(url, params,
function(response, status){
//display results(response, status);
});
}
答案 3 :(得分:0)
您使用的是哪个版本的jQuery?你在用IE吗? live()的早期版本不能与IE一起使用表单提交。 (见http://github.com/rails/jquery-ujs/issues/issue/8)
我想我最终使用了这个:
if (jQuery.browser.msie){
$("form[data-remote]").delegate("input[type='submit'],button[type='submit'],input[name='commit']", 'click', function(e) {
$(this).parents("form[data-remote]").submit();
if(e.preventDefault) e.preventDefault();
});
}
在一个项目中。