我正在尝试添加一个在更改文本输入字段时触发的ajax回调,但无法弄清楚如何执行此操作。我已经尝试在form_alter钩子中为字段添加ajax事件(这对于选择字段很有效),但它没有触发:
my_form_alter(&$form, &$form_state) {
form['my_text_field'][LANGUAGE_NONE]['#ajax'] = array(
'callback' => 'my_text_field_callback',
'wrapper' => 'my-field-wrapper',
'method' => 'replace',
'event' => 'change'
);
}
回调非常简单:
function my_text_field_callback($form, &$form_state) {
return $form['my_text_field'];
}
我也尝试过按键加密事件,但无法触发回调。
答案 0 :(得分:1)
也许这个链接可以帮助您:https://www.drupal.org/docs/7/api/javascript-api/ajax-forms-in-drupal-7
请记住,您在回调函数中处理的$表单已经通过所有表单处理函数发送(但尚未发送到drupal_render())。因此,在调整时,例如,元素的标记很简单:
$ elements ['some_element'] ['#markup'] ='新加价。';
返回$ elements;
更改已转换为#attributes的值 property意味着深入挖掘$ form数组,以及 改变该元素的相应属性。
//你需要同时做两件事
$ elements ['some_element'] ['#disable'] = TRUE;
$ elements ['some_element'] ['#attributes'] ['disabled'] ='禁用';
返回$ elements;