【问题标题】:Joomla 2.5 component. Non blocking modal before savingJoomla 2.5 组件。保存前的非阻塞模式
【发布时间】:2015-06-24 08:13:34
【问题描述】:

在一个自定义组件中,我有一个带有 ajax 调用的 .js 文件,它只传递了一个 POST Json。 获取发布的 Json 并进行一些检查的 API 文件。 我想阻止 Joomla 工具栏的默认行为,比如如果我点击保存,一个 ajax(取决于某些条件)调用会向 API 发送一个帖子,并根据响应触发一个带有取消/继续的非阻塞模式按钮。 我想知道是否有办法拦截 Joomla 工具栏保存/保存和关闭操作事件。

我想诀窍是 joomla 保存按钮的工作原理...JToolBarHelper::apply('myTask');

任何提示将不胜感激:)

【问题讨论】:

    标签: javascript jquery ajax json joomla


    【解决方案1】:

    如果您的按钮具有 onclick 事件处理程序,您可以简单地在组件 js 文件中覆盖它。例如,内容组件“应用”按钮具有以下事件处理程序:-

    onclick="Joomla.submitbutton('article.apply')"

    只要您最后加载您的 .js 文件,您就可以复制 Joomla.submitbutton 函数并按您喜欢的方式处理点击事件。

    例如:

        /* Fires on occasion when a button has it bound to it's onclick event */
        Joomla.submitbutton = function(task)
        {
    
          // Do AJAX request here
          ...
          // Trigger modal here etc 
    
          return false;
        }
    

    您应该能够通过在最后返回 false 来阻止默认保存操作,这将阻止点击事件传播。

    【讨论】:

    • 好的,我管理了如何在 Joomla 的 core.js 和 mootools-more.js 之后加载 my.js 然后我尝试了: Joomla.submitbutton = function(task) { // 在此处触发模式等 if ( task == 'agencies.mytaskupdate' || task == 'agencies.mytaskclose') { // 在此处执行 AJAX 请求 console.log('checking'); } 否则 Joomla.submitform(task);返回假;没有控制台日志,但仍然像往常一样。好像我错过了什么?
    • 如果你只输入 Joomla.submitbutton = function(task){ alert('submit') } 会发生什么 - 你会收到警报吗?如果没有,那么您的脚本文件没有加载或最后没有加载。
    • 我的错,提示是对的,解决了我的问题。谢谢亚当 :)
    猜你喜欢
    • 2016-10-12
    • 2012-01-01
    • 2011-07-14
    • 1970-01-01
    • 2013-04-13
    • 2012-01-14
    • 2013-03-10
    • 2018-01-04
    • 1970-01-01
    相关资源
    最近更新 更多