我在'myform.module'中有这段代码:
<?php
function myform_menu(){
$menuItems = array();
$menuItems['myFirstForm'] = array(
'title' => 'My First Form',
'menu_name' => 'main-menu',
'file' => 'myform.inc',
'access arguments' => array('access content'),
'page callback' => 'myform_callback',
);
return $menuItems;
}
在我的'myform.inc'文件中:
<?php
function myform_callback(){
return drupal_get_form('myform_selectors');
}
function myform_selectors($form, &$form_state){
$form['colors'] = array(
'#type' => 'select',
'#options' => array(
'0' => t('blue'),
'1' => t('red'),
),
'#required' => TRUE,
);
$form['buttons']['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
$form['buttons']['cancel_1'] = array(
'#type' => 'submit',
'#value' => 'Reset form',
'#validate' => array(),
'#submit' => array('myform_selectors_cancel_submit'),
);
$form['buttons']['cancel_2'] = array(
'#markup' => '<input '. drupal_attributes(array('type' => 'reset', 'value' => t('Reset -') )) .' class="form-reset" />',
);
$form['buttons']['cancel_3'] = array(
'#type' => 'button',
'#button_type' => 'reset',
'#value' => t('Clear -'),
'#weight' => 9,
'#validate' => array(),
'#attributes' => array(
'onclick' => 'this.form.reset(); return false;',
),
);
return $form;
}
// VALIDATION
function myform_selectors_validate(&$form, &$form_state){
echo '<script type="text/javascript">alert("validation!"); </script>';
if($form_state['values']['colors'] == '1'){
form_set_error('colors', 'red is not good color!');
}
}
// SUBMIT BUTTON
function myform_selectors_submit(&$form, &$form_state){
drupal_set_message('ok');
}
// RESET BUTTON
function myform_selectors_cancel_submit(&$form, &$form_state){
$form_state['rebuild'] = TRUE;
drupal_set_message('canceled');
}
请检查短视频以查看here>>上的3种类型重置按钮的不良行为。
我想要重置按钮,它会带来默认值,但是对于所需的项目,不会用红色边框标记。
我正在玩这两天没有成功。
谢谢
答案 0 :(得分:1)
问题可能是它是一个提交按钮,并且发生在javascript之前。如果你想使用javascript,你应该使用链接而css作为按钮。 button_type只需添加类https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7#button_type