PHP+jQuery实现自动补全功能源码
曾手作简易的下拉自动补全功能,功能虽成,仅支持鼠标点选,未兼容键盘操作。此功能于项目中颇为常用,因此决定倾注心血以升级之。间,邂逅了select2这一强大插件,其功能丰富,足以满足我们的需求。
在融入jquery插件select2的过程中,曾遭遇数据选取的困扰。无论是以json形式,或是通过jsonp异步传输数据,皆能准确抵达。下拉列表中的选项却无法被正确选取,无论是鼠标还是键盘操作均告失效。几经摸索,方知select2插件在选取数据时,以数据内的id字段为基准。是故,无论json或jsonp,ajax所返回的数据集必须包含id字段。若实际数据库中无此类id,亦可人工构建,但需确保id的唯一性。
在此,展示模板文件try_diy.tpl的源代码。其中colum输入框即为插件应用之所。但需注意,其返回值为id。当页面提交后,需根据用户选择的id查询对应的版面名称name。当控制器接收到非空id值时,将对应版面的name值反馈至页面显示。
select2插件将name名称置于构造的
内部的span元素中。在查询结果页面加载完毕后,需将隐藏域的name值写入span元素。此举旨在确保用户所选的版面名称能够准确、友好地呈现于页面之上。HTML部分:
```html
$(document).ready(function() {
$('colum').select2({
minimumInputLength: 0,
placeholder: '选择版块',
ajax: {
url: " // 提供jsonp请求的url地址
dataType: 'jsonp',
jsonp: "callback", // 用于获得jsonp回调函数名(默认通常为callback)
参考链接:[
让我们来谈谈JSON和JSONP。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器和生成。它在web开发中广泛应用,尤其是在数据交换和API调用中。而JSONP(JSON with Padding)则是一种利用动态脚本标签(`