在keyDown上模拟AJAX化的表单提交



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

但是,我希望能够通过按enter键提交表格。由于它是一个文本区域,除非我添加一个keyUp,否则这是不可能的。然而,在这样做之后,我注意到了一些奇怪的行为。我试着呼叫$('#my_form').submit()$('#my_form > input').click()

模型创建成功(如果我重新加载页面,我可以看到它与其他页面一起列出(,但由于某种奇怪的原因,我的控制器实际上并没有调用format.js。请记住,如果我真的点击提交按钮,一切都很好,但如果我在文本区域上用keyDown调用它,就不会了。

如果有人知道为什么会发生这种情况,并可能提出解决方案,我将不胜感激,因为这已经困扰了我很长一段时间了。

您应该能够做到这一点:

$('.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 开始127.0.0.1的POST"/some/route">

YourController#your_action作为JS 处理

如果它说as JS,那么默认情况下它应该呈现format.js

已修复。出现此问题是因为它试图在文本末尾发送文本。如果我按下回车键(无论我按下了什么键(,提交按钮本身甚至都不起作用。要解决此问题,我只需在提交之前剪掉尾部。

最新更新