web-dev-qa-db-ja.com

D7ビューに表示されたフィルターでJavaScriptを実行するAJAX submit(Dropkick)

AJAXビューの公開されたフィルターグループのフォームが送信された後にJavaScriptを実行する方法に関するチュートリアルが必要です。

問題は Dropkick javascriptプラグインを使用していくつかのドロップダウンをスタイルすることです。 Drupal Dropkick は、これを初期フォームに実装するという適切な仕事をしているようですが、AJAXを送信すると、ドロップダウンのスタイルが失われます。

役立つ場合は、Drupal Dropkickモジュールjsのコピーです。

(function($) {
  Drupal.behaviors.dropkick = {
    attach: function(context) {
      $(Drupal.settings.dropkick.selector, context)
        .not('#field-ui-field-overview-form select, #field-ui-display-overview-form select') //disable dropkick on field ui
        .each(function() {
          $(this).addClass('dk-active').dropkick({
            change: function(value, label){
                $(this).change();   
            }
          });
      });

      //add clearfix to parent .form-item to fix floats
      $('.dk_container').parents('.form-item').addClass('clearfix');
    }
  }
})(jQuery);

何かご意見は?

1
emc

Ajax呼び出しの後にスクリプトを実行するには、jqueryのajaxcomplete関数を使用する必要があります。私は「Dropkick」モジュールに取り組んでいませんが、ドロップダウンをフォーマットするために自分のサイトに「Selectbox」jqueryプラグインを実装しました。

それはあなたを助けるかもしれません。

$(document).ajaxComplete(function(e, xhr, settings) {

  if (settings.url == Drupal.settings.basePath + "?q=views/ajax" || settings.url == Drupal.settings.basePath + "views/ajax" || settings.url == Drupal.settings.basePath + "?q=system/ajax" ||  settings.url == Drupal.settings.basePath + "system/ajax") {       
 // enable selectBox jQuery plugin for all <select> elements
    $("SELECT").selectBox();
    //Drupal.attachbehaviours();   

  }       
}); 
4

私は同じ問題で実行し、この解決策は私のために働きます。

function($) {
  Drupal.behaviors.myBehavior = {
    attach: function (context, settings) {
      $('select').selectBox({
        mobile: true,
        menuSpeed: 'fast'
      });
    }
  };     
})(jQuery);
1
Bruno