Drupal中使用form的#autocomplete_path属性完成json格式的ajax文本框自动填充效果
2009-09-03 20:29
716 查看
由于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的文本自动填充功能,如下:
首先是写一个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的文本自动填充功能,如下:
相关文章推荐
- 使用 jquery-autocomplete插件 完成文本框输入自动填充联想效果 解决兼容IE输入中文问题
- Jquery AutoComplete的使用方法实例(自动完成、自动填充)插件
- 自动完成可编辑文本AutoCompleteTextView的使用
- .net 使用jQuery Autocomplete(自动完成)插件结合ajax
- AJAX自动完成显示控件AutoComplete的使用
- 使用IE过渡滤镜和CSS3中的RGBA属性完成背景色透明效果
- [转]使用IE过渡滤镜和CSS3中的RGBA属性完成背景色透明效果
- jQuery自动完成插件Autocomplete使用实例
- js实现input 的自动完成提示,Autocomplete---此文失效请使用jquery easy-ui更方便(后加)
- .net3.5 和vs2008中Ajax控件的使用--AutoComplete(自动完成控件)的使用
- asp.net ajax 使用AutoCompleteExtender开发自动完成功能(转载)
- jquery.autocomplete调用asp.net的WebService完美实现类似于淘宝自动完成的效果
- 使用jquery autocomplete实现类似搜索引擎的自动填充功能
- 使用jQuery Autocomplete(自动完成)插件,结合ajax实现搜索框匹配
- Json数据格式介绍、使用Android自带类库完成Json生成与解析
- jQuery 关键字搜索(自动完成效果,autocomplete)
- jquery autocomplete自动完成插件的的使用方法
- jQuery的Autocomplete实现自动完成/自动填充
- 自动完成可编辑文本AutoCompleteTextView的使用
- artTemplate--使用artTemplate时,由于json对象属性有数字命名格式 导致调用报错 syntax error