Drupal中使用form的#autocomplete_path属性完成json格式的ajax文本框自动填充效果
来源:互联网 发布:java中list多个列排序 编辑:程序博客网 时间:2024/05/17 08:28
由于drupal默认添加Jquery支持,而且对json格式支持非常好(如有专门的drupal_json方法等),实现文本框自动填充很方便,今天做了个实例
首先是写一个form,我打算让我的“策略名”文本框实现自动填充,写完form后应该是这样,我没有加入ajax功能时候,就是个普通的文本:
$form['autoname'] = array(
'#title' => t('策略名'),
'#type' => 'textfield',
'#size' => '50',
'#required' => TRUE,
'#default_value'=>$sname,
);
效果如下:
现在为策略名这个textfield加入自动填充功能,就是在表单加个#autocomplete_path属性,如下:
$form['autoname'] = array(
'#title' => t('策略名'),
'#type' => 'textfield',
'#size' => '50',
'#required' => TRUE,
'#autocomplete_path' => 'credit/score/view',
'#default_value'=>$sname,
);
这时,这个form元素会知道你在使用自动填充功能,而且给其指定了一个异步访问路径,这个textfield会调用Jquery把键入文本框的值传给这个指定的异步地址,接下来的工作就是要自己写个异步取数据库的方法了,如下:
menu部分指定一个item可以连接到一个方法
//动态存取测验autocomplete
$items ['credit/score/view'] = array (
'title' => t('view strategy name'),
'page callback' => 'getautoname',
'access callback' => 'user_access',
'access arguments' => array('administer credit setting'),
'type' => MENU_CALLBACK
);
然后写出这个取数据库的方法,如下:
function getautoname($string = ''){
$matches = array();
if ($string) {
$result = db_query_range("SELECT sname FROM {credit_score_strategy} WHERE LOWER(sname) LIKE LOWER('%%%s%%')", $string, 0, 5);//下拉框显示五个结果
while ($r = db_fetch_object($result)) {
$matches[$r->sname] = check_plain($r->sname);
}
}
drupal_json($matches);
}
上面程序将取出的结果赋给一个数组,然后调用drupal_json()方法,这个方法会自动将数组转为json格式,然后打印出来,想echo一样
之后,加了 '#autocomplete_path' 属性的表单元素会自己接收这个输出的结果然后解析并放在文本框里,届时文本框右侧会出现那个常见的小蓝圆圈,表示你加入了drupal的文本自动填充功能,如下:
- Drupal中使用form的#autocomplete_path属性完成json格式的ajax文本框自动填充效果
- Ajax实现文本框的自动完成功能
- 文本框中自动完成的应用
- 去掉文本框的自动完成
- 自动完成填充控件AutoCompleteExtender控件的使用
- 关于AutoComplete(文本框的自动填充)
- Ajax中使用JSON格式
- Ajax中传递Json格式的参数
- jQuery中ajax中sendData自动生成JSON格式的文本
- 使用DynaActionForm自动填充Form
- VB6 实现文本框的自动完成功能
- Delphi6 实现文本框的自动完成功能
- 去掉文本框的自动完成功能
- Silverlight 的文本框自动完成(AutoComplete)
- 网友自创的文本框自动完成功能
- php+validate实现文本框的自动完成
- js仿baidu google 实用的文本框内容自动完成效果
- .net3.5 和vs2008中Ajax控件的使用--AutoComplete(自动完成控件)的使用
- WINDOWS下编译jrtplib及其测试
- 华为往事
- Windows与ARM平台的基于JRTPLIB的RTP通信
- 13种常用按钮、文本框、表单等CSS样式
- 全国各大学江湖上的绰号zz
- Drupal中使用form的#autocomplete_path属性完成json格式的ajax文本框自动填充效果
- less和more的一点点差别
- with check option
- 090903项目进展:smb资源的深层递归5,wps实现,
- Chrome的地址栏自动匹配完成(AutoComplete)
- 用MyEclipse写jsp时出现some characters acnnot be mapped using "ISO-8859-1"错误
- char* 和 wchar* 转换 多字节字符串与UNICODE字符串转换
- 第一篇
- 查找Badi和用户出口(USER EXIT)