使用 ujs 手动提交远程表单的 Rails 方式
Posted
技术标签:
【中文标题】使用 ujs 手动提交远程表单的 Rails 方式【英文标题】:The rails way to maunally submit a remote form with ujs 【发布时间】:2018-10-04 14:06:56 【问题描述】:导轨 5.2.0
假设我有一个没有提交按钮的表单,并且我想要另一个事件,例如在输入输入后触发提交,但仍然享受所有 ujs 功能。
这里的最佳做法是什么,我应该调用像 Rails.ajax 这样的方法吗? 或者通过 Rails.fire 触发事件?是否有与此问题相关的文档?
我的案例是在 1 秒内取消输入,然后提交。
【问题讨论】:
但是表格怎么知道你输入了表格呢?可以说我必须输入“foo bar”。它怎么知道,你输入“foo”后输入完了? 只触发表单上的提交事件不起作用? 尝试通过 Rails 触发:trigger('submit.rails')
或 trigger('click.rails')
我不是在问什么有效,我是在问一个官方的方式,没有点击按钮......
我相信您对Rails.fire
的建议接近于官方,仅基于rails-ujs
相对较新并且Rails.fire
是该库提供的事件这一事实。 This comment 也支持Rails.fire
。你最后有没有发现其他更官方的东西?
【参考方案1】:
不确定是否有官方答案,但这个问题的变体对我来说效果很好:
onchange: "$(this).closest('form').submit();"
onchange
、onblur
、onclick
。显然,这是一个 jquery 解决方案。但是概念应该很清楚。
【讨论】:
以上是关于使用 ujs 手动提交远程表单的 Rails 方式的主要内容,如果未能解决你的问题,请参考以下文章
jQuery Mobile 在使用 UJS 远程链接接受标头时中断 Rails respond_to
如何绑定到表单的 ajax:使用 JQuery/Rails UJS 在 typescript 中取得成功