mobiscroll 城市级联-mobiscroll 城市级联默认值问题

问题描述

mobiscroll 城市级联默认值问题

请问下谁做个mobiscroll自定义控件呢

目前遇到两个问题

第一个:选择省级不点击市级 市级默认初始值,如何让它默认选择省级下第一个市级名称
第二个:选择城市之后 输入框中式正确值但是再点击之后弹出的控件只有省级为选择的,而市级为初始化城市

 var _city;
(function ($) {
    var defaults = {
        label: ['省', '市'],
        areaWheels: 'PC',
        areasKey : ['Provinces', 'Cities']
    };
    $.mobiscroll.presetShort('area');
    $.mobiscroll.presets.area = function (inst) {
        var orig = $.extend({}, inst.settings),
            s = $.extend(inst.settings, defaults, orig),
            wg = [],
            wheels = [],
            ttl;
        var areas = s.areaWheels.split(''),areasKey = s.areasKey;
        for (var i = 0; i < areas.length; i++) {
            genWheels(getAreaInfo(i), s.label[i], i);
        }
        wheels.push(wg);
        function getAreaInfo(index) {
            var area, _p, _c;
            if (areas[index] === "P") {
                area = AddressInfo[areasKey[index]];
            }
            if (areas[index] === "C") {
                if(_city==null || _city==''){
                    _p = wg[0].keys[0];
                    area = AddressInfo[areasKey[index]][_p];
                }else{
                    area = _city;
                }

            }
            return area;
        }

        function genWheels(area, lbl, type, isRet) {
            var values = [], keys = [];
            type = areas[type];
            if (type == "P") {
                for (var i = 0; i < area.length; i++) {
                    values.push(area[i]['_proviceid']);
                    keys.push(area[i]['_provicename']);
                }
            }
            if (type == "C") {
                for (var i = 0; i < area.length; i++) {
                    values.push(area[i]['_cityid']);
                    keys.push(area[i]['_cityname']);
                }
            }
            if (isRet) {
                return {
                    values: keys,
                    keys: values,
                    label: lbl
                };
            }
            console.log("初始化:")
            console.log(wg, values, keys, lbl)
            addWheel(wg, values, keys, lbl);
        }

        function addWheel(wg, k, v, lbl) {
            wg.push({
                values: v,
                keys: k,
                label: lbl
            });
        }
        function getAreasResult(type, value, values){
            type = areas[type];
            var area;
            if (type == "P") {
                area = AddressInfo[areasKey[type]];
                $.each(area, function(val, key){
                    if(val === value){
                        return key;
                    }
                })
            }
            if (type == "C") {
                area = AddressInfo[values[type-1]];
                $.each(area, function(val, key){
                    if(val === value){
                        console.log(key);
                        return key;
                    }
                });
            }
            if (type == "D") {
                area = AddressInfo[values[type-1]];
                $.each(area, function(val, key){
                    if(val === value){
                        return key;
                    }
                });
            }
        }
        return {
            wheels: wheels,
            onBeforeShow: function (wheel, inst) {
                console.log(wheel);
                console.log(inst);
                //console.log(wheel.val.split(" ")[1]);
                var val = wheel.val.split(" ")[0];
                var cities =  AddressInfo.Cities[val];
                var provinces = AddressInfo.Provinces;
                _city = cities;
                //s.wheels = wheels;
            },
            onSelect: function (txt, obj) {
                var pid = obj.values[0];
                var cid = obj.values[1];
                var provinces = AddressInfo.Provinces;
                var cities =  AddressInfo.Cities[pid];
                for(var i in provinces){
                    //console.log(provinces[i]);
                    if(pid == provinces[i]._proviceid){
                        jQuery(this).attr('_ptext', provinces[i]._provicename);
                        break;
                    }
                }
                var ishas = true;
                for(var i in cities){
                    //console.log(cities[i]);
                    if(cid == cities[i]._cityid){
                        jQuery(this).attr('_ctext', cities[i]._cityname);
                        ishas = true;
                        break;
                    }else{
                        ishas = false;
                    }
                }
                if(!ishas){
                    jQuery(this).attr('_ctext', cities[0]._cityname);
                }

            },
            onChange: function (index, val, wheel) {
                clearTimeout(ttl);
                //TODO:当前选择的省市区类型(0:省, 1:市)
                val = val.split(" ")[index];
                if (parseInt(index) >= 0 && index < s.label.length - 1) {
                    var data, idx = parseInt(index) + 1//(1:市, 2:区);
                    ttl = setTimeout(function () {
                        //TODO:要改变的省市区类型
                        data = genWheels(AddressInfo[areasKey[idx]][val], s.label[idx], idx ,true);
                        //设置要改变的省市区数据
                        wheel.setWheels(idx, data);
                        //区
                        if(idx < s.label.length - 1){
                            var next = idx + 1, nextVal = data['keys'][0];
                            data = genWheels(AddressInfo[areasKey[next]][nextVal], s.label[next], next ,true);
                            wheel.setWheels(next, data);
                        }
                        // 切换改变动作
                        wheel.changeWheel([idx, idx+1], 0);
                    }, 500);
                }
            }
        }
    };
    var AddressInfo ={
        "Provinces": [
            {
                "_proviceid": 10060,
                "_provicename": "北京市",
                "_provincecode": "110000",
                "_provincepinyin": "",
                "_zipcode": "",
                "_createuser": "系统",
                "_createtime": "2014-09-17T19:35:19",
                "_status": 2
            },
            {
                "_proviceid": 10061,
                "_provicename": "天津市",
                "_provincecode": "120000",
                "_provincepinyin": "",
                "_zipcode": "",
                "_createuser": "系统",
                "_createtime": "2014-09-17T19:35:19",
                "_status": 2
            }
        ],
        "Cities": {
            "10060": [
                {
                    "_cityid": 10019,
                    "_proviceid": 10060,
                    "_cityname": "北京市",
                    "_citycode": "110100",
                    "_citypinyin": "",
                    "_zipcode": "",
                    "_createuser": "系统",
                    "_createtime": "2014-09-17T19:35:19",
                    "_status": 2
                }
            ],
            "10061": [
                {
                    "_cityid": 10356,
                    "_proviceid": 10061,
                    "_cityname": "天津市",
                    "_citycode": "120100",
                    "_citypinyin": "",
                    "_zipcode": "",
                    "_createuser": "系统",
                    "_createtime": "2014-09-17T19:35:19",
                    "_status": 2
                }
            ]
        }
    }
})(jQuery);

解决方案

这个我做出来了,还需要吗?

解决方案二:

我把这个传到github上了 大家可以去那儿看,有问题在github留言就好了https://github.com/iamgaohui/Mobiscroll-City/

解决方案三:

这个问题搞定了吗,我找到的也是这样的问题

时间: 2024-11-08 18:24:42

mobiscroll 城市级联-mobiscroll 城市级联默认值问题的相关文章

[ExtJS]设置级联菜单的默认值

前言 ExtJS在修改这样的页面上赋值是很方便的,在正文中1.2.1代码中可以看出,一行代码就可以搞定,但这是对于普通控件而言,如文本框.对于ComboBox可没这么简单...   版本 Ext JS Library 3.0.0   正文 一.问题 1.1 截图   1.2 代码 1.2.1 前端代码     <script type="text/javascript">         //        function ExtStore(url)         {

ExtJS 设置级联菜单的默认值_extjs

前言 ExtJS在修改这样的页面上赋值是很方便的,在正文中1.2.1代码中可以看出,一行代码就可以搞定,但这是对于普通控件而言,如文本框.对于ComboBox可没这么简单... 版本 Ext JS Library 3.0.0 正文 一.问题 1.1 截图 1.2 代码 1.2.1 前端代码 复制代码 代码如下: <script type="text/javascript"> // function ExtStore(url) { return new Ext.data.St

[NHibernate]一对多关系(级联删除,级联添加)

目录 写在前面 文档与系列文章 一对多关系 一个例子 级联删除 级联保存 总结 写在前面 在前面的文章中,我们只使用了一个Customer类进行举例,而在客户.订单.产品中它们的关系,咱们并没有涉及,比如一个客户可以有一个或者多个订单,在数据库中变现为"主外键关系",有时也喜欢称为"父子关系".那么就让我们一起学习,在nhibernate中,是如何处理这种关系的吧? 文档与系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFacto

安防企业从平安城市到智慧城市建设发展中的疑难与瓶颈

近几年来,智慧城市建设已经在全国各地如火如荼的展开,各级城市的智慧城市案例层出不穷,国家相关部委也对智慧城市建设的规范,标准,评价指标体系进行了顶层设计与权威发布."新型智慧城市"这一提法也随着党的十八大的召开而逐步在各地的智慧城市建设中形成一种新思维,新路线.作为传统安防信息化集成商,如何正确思考智慧城市与平安城市的关系,从平安城市到智慧城市演变中对我们安防领域的影响,安防企业在这样的演变中有何竞争优势,建设疑难与瓶颈成为了广大安防企业都需要主动思考的问题.本文试图以安防企业从业者的

Oracle数据库中的级联查询、级联删除、级联更新操作教程_oracle

级联查询在ORACLE 数据库中有一种方法可以实现级联查询 select * //要查询的字段 from table //具有子接点ID与父接点ID的表 start with selfid=id //给定一个startid(字段名为子接点ID,及开始的ID号) connect by prior selfid=parentid //联接条件为子接点等于父接点,不能反 这个SQL主要用于菜单的级联查询,给一个父接点可以查出所有的子接点.及子接点的子接点,一查到底,很实用.不过呢这个程序只能在orac

SQL Server数据库基础的级联删除、级联更新与三层架构之窥

一.定义 级联删除是指删除包含主键值的行的操作,该值由其它表的现有行中的外键引用.在级联删除中,还删除其外键值引用删除的主键值的所有行. 级联更新是指更新主键值的操作,该值由其它表的现有行中的外键引用.在级联更新中,更新所有外键值与新的主键值相匹配. 三层架构是指一种架构思想.通常他将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的是为了"高内聚.低耦合"的思想. 二.特点 大家都知道,级联删除与级联更新操作,都是指主表的信息删除或更新后,

Struts 之 通配符 路径匹配 常量用法 配置默认值

Struts 框架学习 Action的开发的几种方式 方式1 : 继承ActionSupport     如果使用Struts校验功能,必须继承此类 方式2 : 实现Action接口 方式3 :不继承任何类,不实现任何接口 1.通配符: 在Struts中配置信息,可以用*与{1} 可以优化配置 public class UserAction { private String userName; public void setUserName(String userName) { this.use

[Android]为Spinner填充数据后设置默认值的问题

前言 为Spinner适配完数据后需要设置其默认选项,但是发现直接setSelection(int position)有时候不管用,打开选项又发现已经选中了,但是显示出来的选项又始终默认第一个,本文为文章1的中文简单译本.   文章 1. Using spinner.setSelection & finding the spinner doesn't show the selected item when closed?   声明 欢迎转载,但请保留文章原始出处:)  博客园:http://ww

关于DTS导入导出丢失默认值等对象

对象 使用DTS向导在SQL SERVER之间或两个数据库之间进行数据导入导出按默认值配置,则只导入导出表对象以及视图对象,象其他的比如默认值.存储过程等对象可能丢失,如果希望所有的数据库对象都在导入导出之列,请在DTS向导过程中选择"在SQL SERVER数据库复制对象和数据",接下来就可以选择各个对象进行导入导出了 但要注意,在导的过程中容易出错,可能是由于对象创键的顺序造成的,如果出错建议分多次导,导的顺序可以为:自定义数据类型,表,视图,默认值,约束,自定义函数,存储过程等