Rails + jQuery - 使用jQuery提交没有提交按钮的表单

时间:2010-10-25 22:34:49

标签: jquery ruby-on-rails ruby-on-rails-3 form-for

假设:

<%=form_for [:project, @note], :remote => true do |f| %>

我想创建一个jquery绑定,每隔几秒自动保存一次。我不担心时间部分,只是如何使用jquery自动提交表单(即,不提交用户点击按钮。)

我尝试了这个,但它没有用。建议?

$('form[data-remote]').live('submit', function (e) {
    alert(1);
    e.preventDefault();
});

谢谢!

4 个答案:

答案 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();
    });
}

在一个项目中。