【问题标题】:JQuery Mobile / Rails 4 - Disable Ajax for Forms OnlyJQuery Mobile / Rails 4 - 仅对表单禁用 Ajax
【发布时间】:2013-09-19 16:06:23
【问题描述】:

JQuery Mobile 的 1.1 版过去,仅针对表单提交关闭 AJAX 的功能已被弃用(它与全局 data-ajax 设置相结合。)我目前正在使用 JQM v 1.3。

任何人都有一个快速的解决方案来将 data-ajax-enabled='true' 嵌入到所有表单标签中,因为它们被插入到 DOM 中(通过 JS)?我尝试了很多方法,但似乎没有一个有效。请注意,将 data 属性添加到每个单独的表单标签将不起作用,因为几个 rails 助手(例如 button_to 和 destroy)被包装到在运行时动态创建的表单标签中。

或者,如果任何 Rails 开发人员正在查看此问题,您能否指出如何对表单构建器类进行猴子补丁以将 data-ajax-enabled='true' 添加到所有表单标签的方向?另外,如果其他助手不绑定到表单构建器对象中,我请求他们提供相同的帮助...?

JQuery Mobile 很棒,Rails 也很棒。试图让他们很好地一起玩是一个小小的挑战!

【问题讨论】:

  • 在表单标签中添加data-ajax=false属性。
  • @omar - 谢谢,我知道我可以覆盖每个表单中的设置,但我希望通过 JS 或覆盖将 data-ajax='false' 应用于所有表单标签表单生成器类。
  • hmmm..试试这个$(document).on('pagecreate', '[data-role=page]', function () { $(this).find('form').each(function () { $(this).attr('data-ajax', 'false'); }); });我不确定这是否可行,在我想一些其他解决方案时试一试。
  • @omar - 感谢您的建议,但不幸的是,没有骰子!我尝试在 JQM 加载之前和 JQM 加载之后插入脚本。我不明白为什么 JQM 团队不赞成让人们能够在班级级别切换 AJAX?
  • @omar - 重试后,似乎将 pagecreate 更改为 pageshow 现在可以正常工作,并且它通过 http 提交表单。它只是在我清除浏览器缓存后才获得更改(有点奇怪......)如果您将评论放在答案中,我会将答案标记为正确。

标签: javascript jquery ruby-on-rails jquery-mobile ruby-on-rails-4


【解决方案1】:

您可以将pageshow 上的data-ajax="false" 属性添加到所有表单标签。

$(document).on('pageshow', '[data-role=page]', function () {
  $(this).find('form').each(function () {
    if(!!$(this).attr('data-ajax')) { // if attribute doesn't exist, add it
      $(this).attr('data-ajax', 'false');
    }
  });
});

【讨论】:

    【解决方案2】:

    您可以通过 javascript 执行此操作,这比猴子修补 Rails 表单构建器更清洁、更容易:

    $(document.body).delegate("form",'submit',function(e){
      $(this).attr("data-ajax", "false");
    });
    

    【讨论】:

    • 感谢您的建议,但它不起作用。没有任何东西被插入到 DOM 中。我在加载 JQM 之前和加载 JQM 之后都尝试过。您还有其他建议吗?
    • @AngeloChrysoulakis 我也测试过它,它对我也不起作用。很抱歉,我以为我之前已经测试过了,但看起来你还是找到了答案。感谢您对此的回复!
    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 2011-12-22
    相关资源
    最近更新 更多