开发者

drupal adding onchange event to node form

hi i need to know how to add attribute onchange to a custom content_type field?

For ex my content_type has 2 fields phone (name:field_phone[0][value], id:edit-field-phone-0-value),email (name:field_email[0][value], id:edit-field-email-0-value). i'm una开发者_运维百科ble to add attribute as follows.

 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
 }

how to add it


Altering the forms with CCK widgets requires a bit more tweaking as mentioned on this Book page. Since during hook_form_alter, the CCK fields are not yet processed.

Your code should probably look like (I'm not sure if the emai was intentional spelling):

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;
}

Also, I don't think you need to put the return there. titlevalidate(0); should do just fine.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜