web-gelistirme-sc.com

Programlı olarak AJAX etkin form gönderme düğmesi) tıklamasını nasıl tetikleyebilirim?

Programlı olarak (jQuery ile) AJAX bir Drupal formunda, ancak şimdiye kadar jQuery('#edit-submit').click() davranışı ile) bir tıklama tetiklemeye çalışıyorum hiçbir şey yapmaz.

A gerçek fare tıklaması o düğme istendiği gibi çalışır. Nasıl çalışacağı hakkında bir fikrin var mı?

26
Daniel

jQuery('#edit-submit').mousedown() - görünüşe göre büyük bir fark var.

43
Daniel

Aslında tahmin etmeye gerek yok.

Drupal davranışlarını kullanmalısınız

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

       // Your code goes here....

    }
}

Bu, ayarların ajax özelliğine erişmenizi sağlar,

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

       console.log(settings.ajax);

    }
}

Yapılandırmanıza bağlı olarak, geri arama işlevinin adı, seçicinin kimliği ve tetikleyici etkinliğin adı gibi çeşitli özelliklere sahip tetikleyici öğelerin bir listesini görmelisiniz.

Ardından etkinliğinizi tetiklemek için ilgili bilgileri kullanabilirsiniz.

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

Aşağıdaki gibi ajax gönderisi oluşturun.

 $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.
}

Daha sonra jquery .click () olayı drupal ajax formunda çalışır).

6
Leopathu

Ayrıca .trigger() jQuery yöntemini de kullanabilirsiniz. $('#element').trigger('click');

3
Beebee

Benim durumumda, yukarıda önerilen çözümler benim için işe yaramadı, ancak .mousedown () ifadesi benim için işe yarayan şu fikre yol açtı (Drupal 7):

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

Form API Başvurusunda # ajax_prevent altındaki "neden" hakkında bazı yararlı arka plan bilgileri var

3
David Newkerk

Daha İyi Açıklanan Filtreler modülüne bakıldığında, $ (. Ctools-auto-Submit-click ') ve bir tıklamayı tetikleyerek AJAX formunu gönderirler.

<?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

Formda submit olayını tetiklemelisiniz. Click ve mousedown düğmelerdeki olaylar çalışmıyor.

0
Catalin Motatu