Как программно запускать клик по кнопке отправки формы с поддержкой AJAX?

Я пытаюсь программно (с jQuery) запускать кнопку на кнопке с поведением AJAX в форме Drupal, но пока jQuery ('# edit-submit'). click () doesn ничего не делай.

A реальный щелчок мышью на , эта кнопка работает по назначению. Любые идеи, как заставить его работать?

25 голосов | спросил Daniel 20 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 20 Sep 2011 13:23:33 +0400 2011, 13:23:33

7 ответов


38

jQuery ('# edit-submit'). mousedown () - видимо, есть большая разница.

ответил Daniel 21 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 21 Sep 2011 12:06:31 +0400 2011, 12:06:31
7

Собственно, нет необходимости гадать.

Вы должны использовать поведение Drupal

  Drupal.behaviors.yourFunctionName = {
    attach: функция (контекст, настройки) {

       //Ваш код идет сюда ....

    }
}
 

Это даст вам доступ к свойству ajax настроек,

  Drupal.behaviors.yourFunctionName = {
    attach: функция (контекст, настройки) {

       console.log (settings.ajax);

    }
}
 

В зависимости от вашей конфигурации вы должны увидеть список элементов запуска с различными свойствами, такими как имя функции обратного вызова, идентификатор селектора, а также имя запускающего события.

Затем вы можете использовать соответствующую информацию для запуска вашего мероприятия.

  //$ (selector) .trigger (eventName);
//например...
$ ('# edit-product-id-15', context) .trigger ('change');
 
ответил PatrickS 4 MarpmWed, 04 Mar 2015 13:16:47 +03002015-03-04T13:16:47+03:0001 2015, 13:16:47
5

Создайте ajax, как показано ниже.

  $ form ['button'] = массив (
    '#type' => «Кнопка»,
    '#value' => «Клик»,
    '#ajax' => массив (
      'callback' => '_kf_reading_user_points',
      'wrapper' => «читальных пользовательские точки»,
      'method' => «Заменить»,
      'event' => «Нажмите»,
    ),
  );

function _kf_reading_user_points (& amp; $ form, & amp; $ form_state) {
  //Что-то внутри функции обратного вызова.
}
 

Затем событие jquery .click () будет работать в форме ajax drupal.

ответил Leopathu 31 Jam1000000amSat, 31 Jan 2015 09:11:30 +030015 2015, 09:11:30
3

Вы также можете использовать .trigger () метод jQuery. $ ( '# элемент') триггер ( 'щелчок');.

ответил Beebee 26 FebruaryEurope/MoscowbTue, 26 Feb 2013 13:40:03 +0400000000pmTue, 26 Feb 2013 13:40:03 +040013 2013, 13:40:03
2

В моем случае вышеупомянутые рекомендуемые решения не сработали для меня, но упоминание .mousedown () привело к следующей идее, которая сработала для меня (Drupal 7):

  $ ('# custom-submit-button'). click (function () {
  $ ( '# Аякс кнопки подати-') триггер ( 'MouseDown').
});
 

Есть некоторая полезная справочная информация о «почему», это так в Справочнике API формы в разделе # ajax_prevent

ответил David Newkerk 19 MaramTue, 19 Mar 2013 11:22:49 +04002013-03-19T11:22:49+04:0011 2013, 11:22:49
2

При взгляде на модуль «Лучшие экспоненциальные фильтры» они отправляют форму AJAX, нажимая $ (.ctools-auto-submit-click) и запуская клик.

  & л;? PHP
//... около строки 190 файла better_exposed_filters.js

//Нажмите кнопку автоматического отправки.
$ (Это) .parents ( 'форма') найти ( 'CTools-авто подать щелчок.) Нажмите ()..;
? & GT;
 
ответил user27147 11 MaramTue, 11 Mar 2014 07:41:51 +04002014-03-11T07:41:51+04:0007 2014, 07:41:51
0

Вам нужно запустить событие submit в форме. Нажмите и mousedown события на кнопках не работают.

ответил Catalin Motatu 2 FriEurope/Moscow2011-12-02T14:07:06+04:00Europe/Moscow12bEurope/MoscowFri, 02 Dec 2011 14:07:06 +0400 2011, 14:07:06

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132