Drupal 6 具有ahah属性的Drupal 6 textfield表单元素
我有一个带有textfield元素的表单,当用户开始输入时,我想预先填充一个不同的元素 我一直在使用#ahah属性,该属性与设置为“keyup”的event属性配合得很好,但是我失去了对textfield元素的关注,因为一旦触发“keyup”事件,整个表单就会由于ahah的行为而重建 我尝试将事件属性设置为“change”,效果很好,但是为了触发“change”事件,我需要单击文本字段以外的位置-因此从UI的角度来看,我不能期望用户单击字段以外的位置来显示结果 我不确定是否有可能通过AHAH实现我想要的,这很好,但如果可能的话,我愿意坚持下去 如果需要,很乐意提供代码;如果不清楚,很难解释,则很抱歉 谢谢Drupal 6 具有ahah属性的Drupal 6 textfield表单元素,drupal-6,ahah,form-api,Drupal 6,Ahah,Form Api,我有一个带有textfield元素的表单,当用户开始输入时,我想预先填充一个不同的元素 我一直在使用#ahah属性,该属性与设置为“keyup”的event属性配合得很好,但是我失去了对textfield元素的关注,因为一旦触发“keyup”事件,整个表单就会由于ahah的行为而重建 我尝试将事件属性设置为“change”,效果很好,但是为了触发“change”事件,我需要单击文本字段以外的位置-因此从UI的角度来看,我不能期望用户单击字段以外的位置来显示结果 我不确定是否有可能通过AHAH实现
Steve浏览器不应重新呈现整个表单。这正是想法啊哈,你可以只更新表单的一部分。确保将“wrapper”属性(属于#ahah属性)设置为希望Drupal的JS功能异步更新的DOM元素的ID(如:HTML属性) 例如:
<?php
function MYMODULE_some_ahah_enabled_form(&$form_state) {
$initial_markup = '<div>' . t('This content will be replaced') . '</div>';
$form['dynamic_thing'] = array(
'#type' => 'markup',
'#prefix' => '<div id="dynamic-thing">', // Set Drupal's AHAH wrapper to this ID
'#suffix' => '</div>',
'#value' => $initial_markup,
);
$form['field_which_will_trigger_ahah_behavior'] = array(
'#type' => 'textfield',
'#ahah' => array(
'path' => 'MYMODULE/path/to/ahah/callback',
'wrapper' => 'dynamic-thing',
'event' => 'keyup',
),
'#default_value' => 'Change me',
);
return $form;
}
/**
* Your menu callback (which is declared in your hook_menu()) which returns only the HTML that will replace the existing markup in $form['dynamic_thing'].
*/
function MYMODULE_ahah_callback() {
$output = '<div>New content for the dynamic thing</div>';
drupal_json(array('status' => TRUE, 'data' => $output));
exit();
}
浏览器不应重新呈现整个表单。这正是想法啊哈,你可以只更新表单的一部分。确保将“wrapper”属性(属于#ahah属性)设置为希望Drupal的JS功能异步更新的DOM元素的ID(如:HTML属性)
例如:
<?php
function MYMODULE_some_ahah_enabled_form(&$form_state) {
$initial_markup = '<div>' . t('This content will be replaced') . '</div>';
$form['dynamic_thing'] = array(
'#type' => 'markup',
'#prefix' => '<div id="dynamic-thing">', // Set Drupal's AHAH wrapper to this ID
'#suffix' => '</div>',
'#value' => $initial_markup,
);
$form['field_which_will_trigger_ahah_behavior'] = array(
'#type' => 'textfield',
'#ahah' => array(
'path' => 'MYMODULE/path/to/ahah/callback',
'wrapper' => 'dynamic-thing',
'event' => 'keyup',
),
'#default_value' => 'Change me',
);
return $form;
}
/**
* Your menu callback (which is declared in your hook_menu()) which returns only the HTML that will replace the existing markup in $form['dynamic_thing'].
*/
function MYMODULE_ahah_callback() {
$output = '<div>New content for the dynamic thing</div>';
drupal_json(array('status' => TRUE, 'data' => $output));
exit();
}
现在看起来很明显,不知道我怎么会错过这个。我已经把你的建议应用到我的表格中,并创造了一个魅力。谢谢。现在看起来很明显,不知道我怎么会错过。我已经把你的建议应用到我的表格中,并创造了一个魅力。谢谢