在keyDown上模拟一个AJAX-ified表单提交?

时间:2011-12-05 01:59:44

标签: ruby-on-rails

我目前有一个包含文本区域和提交按钮的远程表单。如果我键入文本并点击提交,则会成功创建模型并正确调用format.js,从而导致文本在上面淡入。

但是,我希望能够通过按Enter提交表单。由于它是文本区域,除非我添加keyUp,否则这是不可能的。但是,在这之后我发现了一些奇怪的行为。我尝试拨打$('#my_form').submit()以及$('#my_form > input').click()

模型创建成功(如果我重新加载页面,我可以看到它与其余部分一起列出),但由于一些奇怪的原因,我的控制器实际上并没有调用format.js。请记住,如果我实际单击提交按钮,一切正常,但如果我在textarea上使用keyDown调用它,则不会。

如果有人知道为什么会这样,并且可能会提出一个解决方案,我会非常感激,因为它已经困扰了我很长一段时间。

2 个答案:

答案 0 :(得分:0)

你应该能够做到这一点:

$('.some-div-here textarea').live('keydown', function(event) {
  if(event.keyCode == '13') {
    $('#my_form').submit();

    return false;
  }
});

在Rails控制器的眼中,手动点击提交按钮和让jQuery为你提交它之间应该没有区别。

如果您查看Rails日志,您应该能够看到:

  

在2011-12-04 21:23:51 -0500开始发布“/ some / route”for 127.0.0.1

     

由YourController处理#your_action为JS

如果显示as JS,则默认情况下应该呈现format.js

答案 1 :(得分:0)

固定。问题出现了,因为它试图在\ r \ n的末尾发送文本。如果我按下回车(并且无论我按下什么键后),它自己的提交按钮甚至都不起作用。为了解决这个问题,我只是在提交之前剪掉尾随的\ r \ n。