it-swarm.asia

كيفية تشغيل النقر برمجيًا على زر AJAX زر إرسال نموذج ممكّن؟

أحاول برمجياً (باستخدام jQuery) الضغط على زر باستخدام سلوك AJAX في نموذج Drupal ، ولكن حتى الآن jQuery('#edit-submit').click() لا تفعل أي شيء .

A النقر بالماوس الحقيقي يعمل هذا الزر على النحو المنشود. اي افكار تجعله يعمل

26
Daniel

jQuery('#edit-submit').mousedown() - يبدو أن هناك فرقًا كبيرًا.

43
Daniel

في الواقع ، ليست هناك حاجة للتخمين.

يجب عليك استخدام Drupal

Drupal.behaviors.yourFunctionName = {
    attach:function (context, settings) {

       // Your code goes here....

    }
}

هذا سوف يمنحك الوصول إلى خاصية الإعدادات في ajax ،

Drupal.behaviors.yourFunctionName = {
    attach:function (context, settings) {

       console.log(settings.ajax);

    }
}

اعتمادًا على التكوين الخاص بك ، يجب أن تشاهد قائمة بعناصر التشغيل ، مع خصائص متنوعة مثل اسم وظيفة رد الاتصال ، ومعرف المحدد وكذلك اسم حدث التشغيل.

يمكنك بعد ذلك استخدام المعلومات ذات الصلة لتشغيل الحدث.

// $(selector).trigger(eventName);
// for example...
$('#edit-product-id-15', context ).trigger('change');
7
PatrickS

إنشاء ajax تقديم مثل ما يلي.

 $form['button'] = array(
    '#type' => 'button',
    '#value' => 'Click',
    '#ajax' => array(
      'callback' => '_kf_reading_user_points',
      'wrapper' => 'reading-user-points',
      'method' => 'replace',
      'event' => 'click',
    ),
  );

function _kf_reading_user_points(&$form, &$form_state) {
  // Something within the callback function.
}

ثم سيكون الحدث jquery .click () يعمل في نموذج drupal ajax.

6
Leopathu

يمكنك أيضًا استخدام .trigger() طريقة jQuery. $('#element').trigger('click');

3
Beebee

في حالتي ، لم تنجح الحلول الموصى بها أعلاه بالنسبة لي ، ولكن ذكر .mousedown () أدى إلى الفكرة التالية التي عملت معي (Drupal 7):

$('#custom-submit-button').click(function() {
  $('#ajax-submit-button').trigger('mousedown');
});

هناك بعض المعلومات الأساسية المفيدة حول "لماذا" هذا هو الحال في Form API Reference تحت # ajax_prevent

3
David Newkerk

بالنظر إلى وحدة Better Exposed Filters ، فإنهم يرسلون النموذج AJAX عن طريق البحث عن $ (.

<?php
// ... near line 190 of better_exposed_filters.js

// Click the auto submit button.
$(this).parents('form').find('.ctools-auto-submit-click').click();
?>
2
user27147

يجب عليك تشغيل حدث submit في النموذج. Click و mousedown الأحداث على الأزرار لا تعمل.

0
Catalin Motatu