drupal ajax demo

function dynamic_menu() {
  $items['dynamic'] = array(
    'title' => t('Form Example Dynamic Form'),
    'page callback' => 'drupal_get_form',
    'page arguments' => array('dynamic_form'),
    'file' => 'dynamic.admin.inc',
    'access callback' => TRUE,
    'type' => MENU_NORMAL_ITEM,
  );
  $items['demo'] = array(
    'title' => t('Ajax demo'),
    'page callback' => 'drupal_get_form',
    'page arguments' => array('automobile_dependent_dropdown'),
    'file' => 'dynamic.admin.inc',
    'access callback' => TRUE,
    'type' => MENU_NORMAL_ITEM,
  );
  return $items;
}

function automobile_dependent_dropdown_submit($form, &$form_state) {
  drupal_set_message(t('Submitting values: @values', array('@values' => var_export($form_state['values'], TRUE))));
}
/**
 * A form with a dropdown whose options are dependent on a
 * choice made in a previous dropdown.
 *
 * On changing the first dropdown, the options in the second
 * are updated.
 */
function automobile_dependent_dropdown($form, &$form_state) {
  // get the list of manufacturers to populate the manufacturer dropdown
  $options_first = _automobile_get_manufacturer_dropdown_options();
  $selected = isset($form_state['values']['manufacturer_dropdown']) ? $form_state['values']['manufacturer_dropdown'] : key($options_first);
  $form['manufacturer_dropdown'] = array(
    '#type' => 'select',
    '#title' => 'Manufacturer',
    '#options' => $options_first,
    '#default_value' => $selected,
    '#ajax' => array(
      'callback' => 'automobile_dependent_dropdown_callback',
      'wrapper' => 'dropdown_model_replace',
    ),
  );
  $form['model_dropdown'] = array(
    '#type' => 'select',
    '#title' => 'Model',
    '#prefix' => '<div id="dropdown_model_replace">',
    '#suffix' => '</div>',
    '#options' => _automobile_get_model_dropdown_options($selected),
    '#default_value' => isset($form_state['values']['model_dropdown']) ? $form_state['values']['model_dropdown'] : '',
  );
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit'),
  );
  return $form;
}

function automobile_dependent_dropdown_callback($form, $form_state) {
  return $form['model_dropdown'];
}

function _automobile_get_manufacturer_dropdown_options() {
  return drupal_map_assoc(array(t('Honda'), t('Toyota'), t('Ford'), t('Volkswagen')));
}

function _automobile_get_model_dropdown_options($key = '') {
  $options = array(
    t('Honda') => drupal_map_assoc(array(t('Accord'), t('Civic'), t('CRX'), t('Pilot'))),
    t('Toyota') => drupal_map_assoc(array(t('Camry'), t('Yaris'), t('Tundra'),t('Tacoma'))),
    t('Ford') => drupal_map_assoc(array(t('F-150'), t('Explorer'), t('Escape'), t('Edge'))),
    t('Volkswagen') => drupal_map_assoc(array(t('GTI'), t('Passat'), t('Jeta'), t('Polo'))),
  );
  if (isset($options[$key])) {
    return $options[$key];
  }
  else {
    return array();
  }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值