プログラムで(jQueryを使用して)AJAX a Drupal formでの動作)でボタンのクリックをトリガーしようとしていますが、これまでのところjQuery('#edit-submit').click()
は何もしません。
A 実際のマウスクリックそのボタンは意図したとおりに機能します。それを機能させる方法はありますか?
jQuery('#edit-submit').mousedown()
-明らかに大きな違いがあります。
実際、推測する必要はありません。
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');
次のように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フォームで機能します。
.trigger()
jQueryメソッドを使用することもできます。 $('#element').trigger('click');
私の場合、上記の推奨される解決策は機能しませんでしたが、.mousedown()について言及したことで、次のようなアイデアが生まれました(Drupal 7)。
$('#custom-submit-button').click(function() {
$('#ajax-submit-button').trigger('mousedown');
});
「なぜ」について役立つ背景情報がいくつかあります。これは、フォームAPIリファレンスの #ajax_prevent に該当します。
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();
?>
フォームでsubmit
イベントをトリガーする必要があります。ボタンのClick
およびmousedown
イベントが機能しません。