AJAX etkin form gönderme düğmesini tıklatma programlı olarak nasıl başlatılır?


25

Programlı olarak (jQuery ile) AJAX davranışı ile Drupal formunda bir düğmeye basmaya çalışıyorum, ancak şu ana kadar jQuery('#edit-submit').click()hiçbir şey yapmıyor.

Bir gerçek fare tıklayın amaçlandığı gibi o düğme eserleri. Nasıl çalıştıracağına dair bir fikrin var mı?


Bir # düzenleme-gönder düğmesiyse, sadece $ ('form') yapamazsınız.
cam8001 20:11

Bu da benim için işe yaramadı. Formu AJAX olmayan bir şekilde gönderir veya hiçbir şey yapmaz, form oluşturucudaki bazı ayarlara bağlıdır.
Daniel

Yanıtlar:


40

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


3
benim için çalışmıyor
ram4nd

Bu çözüm benim için çalıştı. Düğmeye tıklamak ajax çağrısını gerçekleştirdi, ancak .click () veya varyasyonları .mousedown () mükemmel bir şekilde işe yaramadı.
Eric Goodwin

Kimlik seçiciyi form elemanlarında kullanmaktan kaçınırdım. AJAX geri çağırma sırasında form yeniden oluşturulursa, tüm öğelerin kimlikleri değişecek ve jQuery seçiciniz artık çalışmayacaktır.
Yuriy Babenko

Aynen Eric'in söylediği gibi. Neden fark olduğunu bilmek istiyorum ... cidden, bu mantıklı gelmiyor gibi görünüyor.
Johnathan Elmore

@JohnathanElmore mousedown(), bir click()olayın mouseup()gerçekleştiği zaman tamamlanan sadece "ilk kısım" dır . Bir bağlantıya tıkladığınızda ve ardından fareyi bağlantı alanının dışına bıraktığınızda, click()genellikle kovulmaz ve bağlantı izlenmez. Muhtemelen bir ajax çağrısı mouseup()kovulmasını engeller , ama bu sadece bir tahmin ...
pamatt

7

Aslında, tahmin etmeye gerek yok.

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

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 triggering olayının adı gibi çeşitli özelliklere sahip tetikleyici öğelerin bir listesini görmelisiniz.

Etkinliğinizi tetiklemek için ilgili bilgileri kullanabilirsiniz.

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

2
Bu cevabı beğendim, çünkü Drupal projesi üzerinde çalışan Drupal dışı geliştiriciler için oluşturulmuş öğelerle nasıl bir araya getirileceğini keşfetmek için ilginç bir teknik sunuyor. +1
Lester Peabody

6

Aşağıdaki gibi bir ajax gönder 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.
}

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


Ben de ne zaman denemek, geri arama işlevi olmayacak, örnek geri çağırma işlevini de gönderebilir misin
Crazyrubixfan 10:16

1
Geri arama işlevi :) eklendi
Leopathu


3

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

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

Bu altında Formu API Başvurusu olduğu "neden" hakkında bazı yararlı arka plan bilgileri var #ajax_prevent


Click () sarıcısına ihtiyacım yoktu, ama ajax ile olan bağlantıyı KEY oldu!
Ryan Hartman

2

Daha İyi Açığa Çıkan Filtreler modülüne bakıldığında, $ (. Ctools-auto-send-click ') bularak ve bir tıklamayı tıklayarak 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();
?>

click olayı benim için çalıştı, ancak mousedown olayı olmadı.
aross

0

submitOlayı formda tetiklemelisin . Clickve mousedowndüğmelerdeki olaylar çalışmıyor.


İlk başta denedim ve doğru çalışıyor gibi görünmüyor. Buraya nasıl geldim.
Kasım'da
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.