我正在尝试在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响应上创建的。 :(
任何人都知道如何挂钩响应以关注最后一个字段?感谢。
答案 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)
答案 3 :(得分:0)
我遇到了类似的问题(在D6中; D7可能有所不同)。关键是取代
jQuery(document).ready(function(){
//your stuff happens
});
使用:
Drupal.behaviors.myModuleBehavior = function (context) {
//your stuff happens
};