drupal将onchange事件添加到节点表单

时间:2010-05-18 08:08:58

标签: drupal forms

您需要知道如何将属性onchange添加到自定义content_type字段吗?

对于ex我的content_type有2个字段phone(名称:field_phone [0] [value],id:edit-field-phone-0-value),email(名称:field_email [0] [value],id:edit -field-电子邮件0值)。我无法按如下方式添加属性。

 function knpevents_form_event_node_form_alter(&$form, &$form_state) { 

   $form['title']['#attributes'] = array('onchange' => "return titlevalidate(0)");//fine
   $form['field_phone[0][value]']['#attributes']= array('onchange' => "return phonevalidate(0)"); //error
   $form['field_emai[0][value]']['#attributes']= array('onchange' => "return emailvalidate(0)"); //error
 }

如何添加

1 个答案:

答案 0 :(得分:2)

使用CCK小部件更改表单需要进行更多调整,如this Book page所述。由于在hook_form_alter期间,CCK字段尚未处理。

您的代码可能看起来像(我不确定emai是否是故意拼写):

function knpevents_form_event_node_form_alter(&$form, &$form_state) { 
  $form['title']['#attributes'] = array(
      'onchange' => "return titlevalidate(0)"
      );
  $form['#after_build'][] = 'knpevents_form_event_node_form_cck_alter';
}

function knpevents_form_event_node_form_cck_alter($form, &$form_state) {
  $form['field_phone'][0]['value']['#attributes'] = array(
      'onchange' => "return phonevalidate(0)"
      );
  $form['field_emai'][0]['value']['#attributes'] = array(
      'onchange' => "return emailvalidate(0)"
      );
  return $form;
}

另外,我认为你不需要把return放在那里。 titlevalidate(0);应该做得很好。