如何在Drupal 7中启动Colorbox for AJAX表单提交?

时间:2011-10-11 13:08:07

标签: jquery drupal drupal-7 colorbox

我正在使用对此JavaScript函数的调用提交表单:

function emailFriend(){
  jQuery("form[name='comparisons']").attr("action", "/emailfriend/compare");
  jQuery("form[name='comparisons']").bind('submit', function() {
    jQuery.get(jQuery("form[name='comparisons']").attr("action"),
    jQuery("form[name='comparisons']").serialize(),
    function(data){                // send to colorbox
      $.colorbox({                 // this is where the error comes from
        html:   data,
        open:   true,
        iframe: true               // use iframe
      });
    },
    "html");
  });
  jQuery("form[name='comparisons']").submit();
}

此表单打开位于/ emailfriend / compare的另一个表单。第二种形式是我试图在彩盒中弹出的形式。上面的代码用于打开表单,但它返回错误$.colorbox is not a function,然后在同一窗口/选项卡中打开目标表单。

我正在使用Drupal 7并安装并启用了colorbox模块。当将颜色框用于链接,图像等时,颜色框方面在整个网站中起作用。

谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:-2)

为了避免与其他库的冲突,jQuery不再使用Drupal 7中的$变量进行初始化(这在其他系统中也是常见做法,而不仅仅是Drupal)。您需要为$变量提供上下文,或将$.colorbox更改为jQuery.colorbox

(function($) {
  function emailFriend(){
    $("form[name='comparisons']").attr("action", "/emailfriend/compare");
    $("form[name='comparisons']").bind('submit', function() {
      $.get($("form[name='comparisons']").attr("action"),
      $("form[name='comparisons']").serialize(),
      function(data){                // send to colorbox
        $.colorbox({                 // this is where the error comes from
          html:   data,
          open:   true,
          iframe: true               // use iframe
        });
      },
      "html");
    });
    $("form[name='comparisons']").submit();
  }
})(jQuery);

或:

function emailFriend(){
  jQuery("form[name='comparisons']").attr("action", "/emailfriend/compare");
  jQuery("form[name='comparisons']").bind('submit', function() {
    jQuery.get(jQuery("form[name='comparisons']").attr("action"),
    jQuery("form[name='comparisons']").serialize(),
    function(data){                // send to colorbox
      jQuery.colorbox({                 // this is where the error comes from
        html:   data,
        open:   true,
        iframe: true               // use iframe
      });
    },
    "html");
  });
  jQuery("form[name='comparisons']").submit();
}

就个人而言,我只是使用第二种方式,因为你已经写出了代码: - )