你的帖子的開頭令人困惑:你的句子陳述「在更改狀態時城市應該在複選框中查看,下面是我的代碼」〜州應該是複選框或選擇?
無論哪種方式,我有這樣的使用狀態的代碼爲「選擇」和城市爲「複選框」:
function state_form($form, &$form_state) {
$form = array();
$form['rate_the_service']['state'] = array(
'#type' => 'select',
'#prefix'=>'<div id="dropdown-third-replace">',
'#suffix'=>'</div>',
'#options'=>array(
'0' => t('Ohio'),
'1' => t('New York'),
),
'#validated' => TRUE,
'#ajax' => array(
'event' => 'change',
'callback' => 'ajax_example_dependent_dcheck_state_callback',
'wrapper' => 'checkboxes-four-replace',
),
);
$city_array = array(
'1' => array(
'1' => 'Cincinnati',
'2' => 'Cleveland',
'3' => 'Toledo'
),
'2' => array(
'4' => 'New York City',
'5' => 'Buffalo',
'6' => 'Syracuse'
),
);
if (isset($form_state['values']['state']) && $form_state['values']['state'] == 1) {
$form['rate_the_service']['city'] = array(
'#prefix'=>'<div id="checkboxes-four-replace">',
'#type' => 'checkboxes',
'#options' => $city_array[2],
'#default_value' => isset($values['city']) ? $values['city'] : array('1'),
'#suffix'=>'</div></div>',
);
} else {
$form['rate_the_service']['city'] = array(
'#prefix'=>'<div id="checkboxes-four-replace">',
'#type' => 'checkboxes',
'#options' => $city_array[1],
'#default_value' => isset($values['city']) ? $values['city'] : array('2'),
'#suffix'=>'</div></div>',
);
}
return $form;
}
/**
* Ajax Callback for development_form
*/
function ajax_example_dependent_dcheck_state_callback($form, $form_state) {
return $form['rate_the_service']['city'];
}
可選,如果你想要的狀態是「複選框」,以及城市,你可以這樣做:
function state_form($form, &$form_state) {
$form = array();
$form['rate_the_service']['state'] = array(
'#type' => 'checkboxes',
'#prefix'=>'<div id="dropdown-third-replace">',
'#suffix'=>'</div>',
'#options'=>array(
'ohio' => t('Ohio'),
'new_york' => t('New York'),
),
'#validated' => TRUE,
'#ajax' => array(
'event' => 'change',
'callback' => 'ajax_example_dependent_dcheck_state_callback',
'wrapper' => 'checkboxes-four-replace',
),
);
$city_array = array(
'1' => array(
'1' => 'Cincinnati',
'2' => 'Cleveland',
'3' => 'Toledo'
),
'2' => array(
'4' => 'New York City',
'5' => 'Buffalo',
'6' => 'Syracuse'
),
);
// refine as needed to fit your validation, if this is your use case
if (isset($form_state['values']['state']['ohio']) && $form_state['values']['state']['ohio'] == 'ohio') {
$form['rate_the_service']['city'] = array(
'#prefix'=>'<div id="checkboxes-four-replace">',
'#type' => 'checkboxes',
'#options' => $city_array[1],
'#default_value' => isset($values['city']) ? $values['city'] : array('1'),
'#suffix'=>'</div></div>',
);
} else if (isset($form_state['values']['state']['new_york']) && $form_state['values']['state']['new_york'] == 'new_york') {
$form['rate_the_service']['city'] = array(
'#prefix'=>'<div id="checkboxes-four-replace">',
'#type' => 'checkboxes',
'#options' => $city_array[2],
'#default_value' => isset($values['city']) ? $values['city'] : array('2'),
'#suffix'=>'</div></div>',
);
} else {
$form['rate_the_service']['city'] = array(
'#prefix'=>'<div id="checkboxes-four-replace">',
'#type' => 'checkboxes',
'#options' => array(),
'#default_value' => isset($values['city']) ? $values['city'] : array('2'),
'#suffix'=>'</div></div>',
);
}
return $form;
}
/**
* Ajax Callback for development_form
*/
function ajax_example_dependent_dcheck_state_callback($form, $form_state) {
return $form['rate_the_service']['city'];
}
,這裏是與各國的「選擇」框和城市作爲一個「選擇」框的情況下
function state_form($form, &$form_state) {
$form = array();
$form['rate_the_service']['state'] = array(
'#type' => 'select',
'#prefix'=>'<div id="dropdown-third-replace">',
'#suffix'=>'</div>',
'#options'=>array(
'ohio' => t('Ohio'),
'new_york' => t('New York'),
),
'#validated' => TRUE,
'#ajax' => array(
'event' => 'change',
'callback' => 'ajax_example_dependent_dcheck_state_callback',
'wrapper' => 'checkboxes-four-replace',
),
);
$city_array = array(
'1' => array(
'1' => 'Cincinnati',
'2' => 'Cleveland',
'3' => 'Toledo'
),
'2' => array(
'4' => 'New York City',
'5' => 'Buffalo',
'6' => 'Syracuse'
),
);
if (isset($form_state['values']['state']) && $form_state['values']['state'] == 'new_york') {
$form['rate_the_service']['city'] = array(
'#prefix'=>'<div id="checkboxes-four-replace">',
'#type' => 'select',
'#options' => $city_array[2],
'#default_value' => isset($values['city']) ? $values['city'] : array('1'),
'#suffix'=>'</div></div>',
);
} else {
$form['rate_the_service']['city'] = array(
'#prefix'=>'<div id="checkboxes-four-replace">',
'#type' => 'select',
'#options' => $city_array[1],
'#default_value' => isset($values['city']) ? $values['city'] : array('2'),
'#suffix'=>'</div></div>',
);
}
return $form;
}
/**
* Ajax Callback for development_form
*/
function ajax_example_dependent_dcheck_state_callback($form, $form_state) {
return $form['rate_the_service']['city'];
}
+ 1有同樣的問題。 replace()函數似乎不被支持。 – Atomox 2013-05-29 17:43:58
我有一個工作解決方案,我嘲笑起來 - 但我不想分享,直到你澄清這句話:你的帖子的開始是令人困惑的:你的句子陳述「雖然onchange州的城市應該在複選框中查看。下面是我的代碼「〜國家應該是複選框還是選擇? – inertialmedia 2013-05-31 13:56:28