سؤال

لقد عرضت مع مرشح مكشوف واحد (تحديد). إنها تستخدم AJAX لإعادة ملء عندما ينقر المستخدم "تطبيق". أود منهم أن تضطر إلى النقر فوق ذلك وتمويل فقط عند تغيير المحدد. أفترض أنني سأحتاج إلى بعض JS أكثر أو أقل مثل هذا (على الرغم من أن هذا لا يبدو أن هذا يعمل تماما):

$('#edit-tid').change(function(){
  $('#views-exposed-form-MYVIEW-page-1').submit();
});

أولا، أعتقد أن ذلك سيفعل ذلك، لكنه لا يتم تقديمه. أي شخص يعرف لماذا؟

ثانيا، ما هي أفضل طريقة لحق الكود؟ أنا أفكر في استخدام تذييل الرأي لأنه سهل، ولكن أي أفكار أفضل أخرى؟

تحديث: رمز أعلاه يكون العمل (حقن عبر تذييل المشاهدات)، ولكن فقط في المرة الأولى. أعتقد أن المحدد يزداد طردا بواسطة مكالمة AJAX، ولكن السلوك لا يحصل على إعادة صياغة (أو شيء ما). همم...

تحديث رقم 2: من أجل البساطة، سأقوم بخندق أياكس.

هل كانت مفيدة؟

المحلول

من أجل إعادة إرفاق هذا الرمز بعد مكالمة AJAX، يجب إرفاقها في البداية عبر Drupal.behaviors. شيء من هذا القبيل:

Drupal.behaviors.myCustomModule = function(context) {
  $('#edit-tid', context).change(function(){
    $('#views-exposed-form-MYVIEW-page-1').submit();
  });
}

لاحظ أن حجة السياق يتم تمريرها إلى المحدد. يجب استدعاء Drupal.Behaviors مرة أخرى على المحتوى الجديد الذي تم تحميله عبر Ajax.

تحديث: لم ألاحظ أنك قمت بإدراج JS عبر تذييل المشاهدات. ما ذكر أعلاه يجب أن يعمل، فقط استبدل "MyCustommoum" مع بعض المعرف الفريد حتى لا تتجاوز السلوكيات الأخرى.

نصائح أخرى

أعتقد أن هذه الميزة تعمل خارج الصندوق (على الأقل في Drupal 7). تحرير وجهة نظرك وتحتمكشوف الشكل يختار

Exposed form style -> Settings

ثم هناك خيار

Autosubmit

حيث يمكنك اختيار ما إذا كنت تريد "إرسال النموذج تلقائيا بمجرد تغيير عنصر". هناك أيضا إمكانية استخدام الخيار

Hide submit button

الذي يفسره "إخفاء زر إرسال إذا تم تمكين JavaScript".

pradeep: يمكنك إدراجها في قالب عرض موضوعي (انظر http://www.group42.ca/theming_views_2_the_basics.) من وجهة نظرك. (آسف، لا يمكن أن يكتب هذا كتعليق وفقا للمنتدى UI)

إذا كنت بحاجة إلى AJAX للعمل عند تغيير خيار تحديد في وجهة نظرك المكشوفة

Drupal.behaviors.myCustomModule = {
attach: function (context, settings) {
    $('select[data-drupal-selector="edit-YOUR-FIELD"]', context).change(function(){
        $('#views-exposed-form-YOUR-VIEW-block-1 input.form-submit').trigger('click');
    });
}

};

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top