我使用的是drupal 6 版本
由于Drupal使用自己的form表单机制来输出表单,如果想在表单中使用一些自己定义的css或者添加的js控件等可以这样做:
drupal的form表单有一个属性叫做#attributes,详见:http://api.drupal.org/api/drupal/developer--topics--forms_api_reference.html/6#attributes
这里我写一个调用js日历的小例子来说明一下如何使用,我这里调用的是onClick事件
菜单指向的方法函数:
function credit_test(){
//指定我要加载的js文件
$modulepath = drupal_get_path('module', 'credit');
drupal_add_js($modulepath.'/js/date.js');
$output = drupal_get_form('credit_test_form');
return $output;
}
然后是表单:
function credit_test_form(&$form_state){
$form['dateinput'] = array(
'#id'=>'mydate',
'#title' => t('输入日期'),
'#type' => 'textfield',
'#size' => '50',
'#required' => TRUE,
'#attributes' => array('onClick' => 'MyCalendar.SetDate(this)')
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('提交')
);
return $form;
}
在这里,菜单访问的函数我写了一个credit_test()方法过度而不是直接调用drupal_get_form方法,这样方便我加载我想要的js文件或者css文件,当然直接在credit_test_form加也可以,好了,闲话少说,看form函数中的dateinput元素,它是个textfield,用来输入日期,红字部分就是用到了#attributes属性,他本身可以是个数组,在后面可以加入你想放的东西,我这里加了一个onClick事件来触发我的日历,这样在实际输出的页面中这个textfield看起来会是这样:
onClick部分就是 #attributes打出来的,效果: 当然如果有更多的其他属性,就在其所在的数组里继续写就可以了,比如 '#attributes' => array('onClick' => 'MyCalendar.SetDate(this)','onChange'=>'namecheck()','class'=>'dateinput',readonly=>true) 等等
- <input type="text" name="dateinput" id="mydate" size="50" value="" onClick="MyCalendar.SetDate(this)" />