Drupal CCK добавить еще один пункт обратного вызова - PullRequest
2 голосов
/ 22 января 2010

Я пытаюсь сфокусировать последний элемент поля при выполнении «добавления другого элемента» в поле с несколькими значениями CCK

Вот мой код:

 $("#node-form table.content-multiple-table tr.draggable input[type='text']").live("keydown", function (e) {
  if (e.which == 13) {
   $(this).closest("table.content-multiple-table").siblings("div.content-add-more").find("input.form-submit").mousedown();
   $(this).closest("tr.draggable").next().find("input[type='text']").trigger("focus");
   return false;
  }
 });

Понятно, что это не работает, потому что поле создано по ответу AHAH. (

Кто-нибудь знает, как подключиться к ответу, чтобы сфокусировать последнее поле? Спасибо.

Ответы [ 4 ]

3 голосов
/ 22 января 2010

Вы должны использовать Drupal.behaviors , а Drupal должен управлять подключением поведения за вас.Модули должны запустить их после изменения DOM (включая запросы AHAH).

В вашем случае вы, вероятно, захотите добавить два поведения: одно к кнопке, чтобы отметить, что она была нажата, и другое к последнему полю, чтобы сфокусироваться, если установлен флаг (и снимите флажок).

1 голос
/ 16 февраля 2010

Глядя на исходный код cck / includes / content.node_form.inc , а точнее эту часть в функции content_add_more_js :

  // Build our new form element for the whole field, asking for one more element.
  $form_state['item_count'] = array($field_name => count($_POST[$field_name]) + 1);
  $form_element = content_field_form($form, $form_state, $field);
  // Let other modules alter it.
  drupal_alter('form', $form_element, array(), 'content_add_more_js');

Я бы сказал, что вам нужно настроить hook_form_alter, где form_id равен 'content_add_more_js', так как кажется, что он вызывается после создания нового поля, но перед добавлением его на страницу.

Хотя я еще не пробовал ...


Усама Мубарак // Полуаддикт

0 голосов
/ 26 июля 2011

У меня была похожая проблема (в D6; может быть другой для D7) Ключ заменяет

jQuery(document).ready(function(){
//your stuff happens
});

с:

Drupal.behaviors.myModuleBehavior = function (context) {
//your stuff happens
};
0 голосов
/ 22 января 2010

Используйте последний: http://api.jquery.com/last

...