web-dev-qa-db-ja.com

プログラムでAJAX有効になっているフォームの送信ボタンをクリックすることをトリガーする方法は?

プログラムで(jQueryを使用して)AJAX a Drupal formでの動作)でボタンのクリックをトリガーしようとしていますが、これまでのところjQuery('#edit-submit').click()は何もしません。

A 実際のマウスクリックそのボタンは意図したとおりに機能します。それを機能させる方法はありますか?

26
Daniel

jQuery('#edit-submit').mousedown()-明らかに大きな違いがあります。

43
Daniel

実際、推測する必要はありません。

Drupal Behaviorsを使用する必要があります

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

       // Your code goes here....

    }
}

これにより、設定のajaxプロパティにアクセスできます。

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

       console.log(settings.ajax);

    }
}

構成に応じて、コールバック関数の名前、セレクターのID、トリガーイベントの名前などのさまざまなプロパティを持つトリガー要素のリストが表示されます。

その後、関連情報を使用してイベントをトリガーできます。

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

次のようにajax submitを作成します。

 $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');
});

「なぜ」について役立つ背景情報がいくつかあります。これは、フォームAPIリファレンスの #ajax_prevent に該当します。

3
David Newkerk

Better Exposed Filtersモジュールを見ると、$(。ctools-auto-submit-click ')を見つけてクリックをトリガーすることにより、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