我在页面中显示元素时遇到了问题。根据角色选项的选择,我需要显示|隐藏select-element。所以我隐藏了一个这样的元素:
$form['field_test_field']['#access'] = 0;
但是当状态改变时,我不能通过绑定1把它带回来。这就是我的代码片段:
function seven_form_user_register_form_alter(&$form, &$form_state, $form_id) {
$form['account']['roles']['#ajax'] = array(
'callback' => 'seven_dynamic_form_ajax_callback',
'wrapper' => 'replace_droplist',
'event' => 'change',
);
$form['field_test_field']['#prefix'] = '<div id="replace_droplist">';
$form['field_test_field']['#suffix'] = '</div>';
$form['account']['roles']['#type'] = 'radios';
$checkedRole = isset($form_state['values']['roles'])
? $form_state['values']['roles'] : 0;
if ($checkedRole == 0) {
$form['field_test_field']['#access'] = 1;
} elseif ($checkedRole == 4) {
$form['field_test_field']['#access'] = 0;
} elseif ($checkedRole == 3) {
$form['field_test_field']['#access'] = 1;
}
};
function seven_dynamic_form_ajax_callback($form, $form_state) {
return $form['field_test_field'];
}
谢谢。
发布于 2013-08-23 10:25:24
<code>
$form['enter_amt'] = array(
'#type' => 'checkbox',
'#title' => t('Enter Billable Amount'),
);
$form['billable_ctc'] = array(
'#type' => 'textfield',
'#title' => t('Billable CTC'),
'#maxlength' => '15',
'#field_prefix' => t('Rs.'),
'#states' => array('invisible' => array(':input[name="enter_amt"]' => array('checked' => TRUE), ), ),
);
$form['billing_rate'] = array(
'#type' => 'textfield',
'#title' => t('Billing rate'),
'#maxlength' => '7',
'#field_suffix' => '%',
'#size' => 3,
'#attributes' => array('class' => array('auto-width')),
'#states' => array('invisible' => array(':input[name="enter_amt"]' => array('checked' => TRUE), ), ),
);
</code>
这段代码让我可以根据单击复选框来隐藏和显示特定的表单元素。
https://stackoverflow.com/questions/18395226
复制