Mar*_*ütz 5 unobtrusive-javascript prototypejs ruby-on-rails-3
在Rails 3应用程序中,只要切换某个复选框,我想让浏览器调用远程函数.在Rails 2中,通过传递很容易做到
:onclick => remote_function(...)
Run Code Online (Sandbox Code Playgroud)
到复选框助手.在Rails 3中,不推荐使用remote_*函数,因此我尝试了以下解决方法:
form_tag ... :remote => true$("dummy_form").submit();从onclick处理程序调用提交表单与Rails捆绑在一起的rails.js文件是一个侦听submit事件的观察者.但是,这些似乎仅在用户单击提交按钮时触发,而不是在form.submit()调用时触发(到目前为止仅在FF中测试).
这具有不希望的效果,即提交不是通过AJAX在后台完成,而是通常的方式,因此浏览器离开当前站点并显示来自控制器的响应.
有没有人知道解决方法?也许是一种完全不同的方式来获得相同的功能?
您可以通过以下方式提交表格:
$("dummy_form").request({
onSuccess: function(response) {eval(response)}
});
Run Code Online (Sandbox Code Playgroud)
这将使用 AJAX 将表单提交到给定 form_tag 的 url 并评估收到的响应,因此它必须使用 JS 响应。如果您不希望这样做,请更改 onSuccess 实现。
如果表单提交是一种解决方法,正如您所说,那么您也可以手动处理复选框上的单击事件并发送AJAX 请求,而不是提交整个表单:
<%= javascript_tag do %>
Event.observe(window, 'load', function() {
$('CHECK_BOX_ID').observe('click', function(event) {
new Ajax.Request('/your/url', {
onSuccess: function(response) {
// yada yada yada
}
})
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
891 次 |
| 最近记录: |