2

在 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

4 回答 4

3

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

在您的情况下,您可能希望添加两种行为,一种是按钮以标记它被按下,另一种是在设置了标志(并取消设置标志)时关注的最后一个字段。

于 2010-01-22T07:20:27.517 回答
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',因为它似乎是在生成新字段之后调用的,但在将其添加到页面之前。

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


乌萨马穆巴拉克//半瘾君子

于 2010-02-16T15:49:46.317 回答
0

我遇到了类似的问题(在 D6 中;对于 D7 可能不同)。关键是换

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

和:

Drupal.behaviors.myModuleBehavior = function (context) {
//your stuff happens
};
于 2011-07-26T12:23:41.550 回答
0

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

于 2010-01-22T04:15:43.767 回答