Drupal CCK添加另一个项目回调

时间:2010-01-21 22:11:56

标签: jquery ajax drupal cck

我正在尝试在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 个答案:

答案 0 :(得分:3)

您应该使用Drupal.behaviors,Drupal应该为您管理附加行为。模块应在修改DOM(包括AHAH请求)后重新运行。

在您的情况下,您可能希望添加两个行为,一个用于标记按下的按钮,另一个用于最后一个字段,如果设置了标志(并取消设置标志)则要对焦。

答案 1 :(得分:1)

查看 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',因为它似乎是在生成新字段之后调用的,但是在将它添加到页面之前。

虽然我还没试过......


Oussama Mubarak // Semiaddict

答案 2 :(得分:0)

使用最后: http://api.jquery.com/last

答案 3 :(得分:0)

我遇到了类似的问题(在D6中; D7可能有所不同)。关键是取代

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

使用:

Drupal.behaviors.myModuleBehavior = function (context) {
//your stuff happens
};