精华帖 (0) :: 良好帖 (8) :: 新手帖 (0) :: 隐藏帖 (8)
|
|
---|---|
作者 | 正文 |
发表时间:2010-03-22
最后修改:2010-09-27
最新版本的LocationSelect已经将其与jQuery分离,但做了一个jQuery的适配器,可以和jQuery一起使用。而且现在可以支持任意级别联动⋯⋯
介绍用户的地址选择往往是网络应用中不可缺少的一部分,可是遇到了以下问题:
LocationSelect插件具有以下特点,有效的解决了以上三个问题:
演示一个在线演示可以在http://pagetalks.com/share/LocationSelect找到。
兼容性我测试过如下浏览器:Safari5、Safari Mobile(iOS 4.0.1)、Firefox3、IE6、IE7、IE8、Opera10
下载代码寄存在GitHub : http://github.com/RobinQu/LocationSelect-Plugin 安装
参数如何定制有很多同学想要进行定制操作,从1.1版本开始,就已经把大部分重要的算法给独立到单独的接口里面,方便大家定制。首先讲一下这个插件的工作原理。 首先,插件会尝试使用ListHelper的fetch方法去取回所有要用的数据文件。默认情况下会访问ListHelper.dataUrl的地址,如果你不作任何配置,这个地址指向的是插件自带的areas_1.0.json。 当fetch方法返回之后,会执行一个回调函数。这个回调函数里回进行列表的初始划操作。 当列表都初始化完成,控件就已经可用了。如果自动探测的选项依然为true,就会继续接下来的探测逻辑。插件内置了根据IP判断地理位置的探测算法。 该算法是调用的Maxmind GEOCITY的API获得用户经纬度,然后使用Google Map的Geocoder WebService根据经纬度解析用户地理信息。然后利用返回结果去对列表进行“选择”。 可以看到还有个YQL的参与,这是Google Map V3的WebService已经不支持JSONP了,对跨域请求来说是噩梦。通过YQL作为一个Proxy返回的JSONP。 下面开始介绍如何进行深度定制。首先上一张Class Diagram。 基本来说,通过定制所传入的ListHelper对象detector函数来控制该插件的功能。 ListHelper是一个列表的工具接口。默认的ListHelper采用了Singleton的模式,但你可以选择不这么做。只要保证提供fetch和find方法即可。这两个方法必须实现如下操作:
{ "id" : "112", "text" : "Foobar" } 注意该项目中所有的属性均为字符串。 你可以用fetch方法从后台取得数据(不管是啥数据,只要复合数据项目的结构规定)之后,根据这些数据实现find方法。 你可以传入的另外一个元素是detector函数。这个是执行自动选择的函数。默认的detector函数执行了地理位置的探测,但你可以实现你自得探测算法。只要最终使用LocationSelect.select()方法选择一组数据项。例如: that.select(["湖北省",“武汉市”]); 这些值始终会根据List的传入顺序进行比对。如果List的数目大于给出的数组元素的数量,将不会对那些没有对应数值的List进行选择;如果传入的数值数组元素个数大于List个数,剩下的数组元素将会被抛弃。 通过传入自定义的ListHelper和detector,你可以完全自定义出类似于多级商品门类选择之类的联动菜单应用。也就不局限于选择一下地址而已了⋯⋯ 更新日志
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-03-23
竟然没有回复⋯⋯
|
|
返回顶楼 | |
发表时间:2010-03-24
IE8测试下来没什么问题,等会下了看看代码
|
|
返回顶楼 | |
发表时间:2010-03-24
我居然是前三
|
|
返回顶楼 | |
发表时间:2010-03-24
还以为有地图。。。
|
|
返回顶楼 | |
发表时间:2010-03-24
最后修改:2010-03-24
早一天,我昨天就不费劲做这个了!!!!!
给你投了良好!!! 顺便问一下,能不能裁剪,比如我需要选择到市就可以了,不需要地区!! |
|
返回顶楼 | |
发表时间:2010-03-25
非常不错!
非常期待楼主的下一个版本发布。。。 |
|
返回顶楼 | |
发表时间:2010-03-25
google走了,过两天api都访问不了了
|
|
返回顶楼 | |
发表时间:2010-04-04
lobbychmd 写道 还以为有地图。。。
加地图是非常简单的~ |
|
返回顶楼 | |
发表时间:2010-04-04
kjj 写道 早一天,我昨天就不费劲做这个了!!!!!
给你投了良好!!! 顺便问一下,能不能裁剪,比如我需要选择到市就可以了,不需要地区!! 目前不能设置,但是可以手动将那个选择地区的input隐藏? 再过几天会修改一次代码吧⋯⋯ |
|
返回顶楼 | |