/* * * 全局空间 vcity * */ var vcity = {}; /* * * 静态方法集 * @name _m * */ vcity._m = { /* 选择元素 */ $:function (arg, context) { var tagall, n, eles = [], i, sub = arg.substring(1); context = context || document; if (typeof arg == 'string') { switch (arg.charat(0)) { case '#': return document.getelementbyid(sub); break; case '.': if (context.getelementsbyclassname) return context.getelementsbyclassname(sub); tagall = vcity._m.$('*', context); n = tagall.length; for (i = 0; i < n; i++) { if (tagall[i].classname.indexof(sub) > -1) eles.push(tagall[i]); } return eles; break; default: return context.getelementsbytagname(arg); break; } } }, /* 绑定事件 */ on:function (node, type, handler) { node.addeventlistener ? node.addeventlistener(type, handler, false) : node.attachevent('on' + type, handler); }, /* 获取事件 */ getevent:function(event){ return event || window.event; }, /* 获取事件目标 */ gettarget:function(event){ return event.target || event.srcelement; }, /* 获取元素位置 */ getpos:function (node) { var scrollx = document.documentelement.scrollleft || document.body.scrollleft, scrollt = document.documentelement.scrolltop || document.body.scrolltop; var pos = node.getboundingclientrect(); return {top:pos.top + scrollt, right:pos.right + scrollx, bottom:pos.bottom + scrollt, left:pos.left + scrollx } }, /* 添加样式名 */ addclass:function (c, node) { if(!node)return; node.classname = vcity._m.hasclass(c,node) ? node.classname : node.classname + ' ' + c ; }, /* 移除样式名 */ removeclass:function (c, node) { var reg = new regexp("(^|\\s+)" + c + "(\\s+|$)", "g"); if(!vcity._m.hasclass(c,node))return; node.classname = reg.test(node.classname) ? node.classname.replace(reg, '') : node.classname; }, /* 是否含有class */ hasclass:function (c, node) { if(!node || !node.classname)return false; return node.classname.indexof(c)>-1; }, /* 阻止冒泡 */ stoppropagation:function (event) { event = event || window.event; event.stoppropagation ? event.stoppropagation() : event.cancelbubble = true; }, /* 去除两端空格 */ trim:function (str) { return str.replace(/^\s+|\s+$/g,''); } }; /* 所有城市数据,可以按照格式自行添加(北京|beijing|bj),前16条为热门城市 */ vcity.allcity = ['北京|beijing|bj','天津|tianjin|tj','上海|shanghai|sh','重庆|chongqing|cq','河北|hebei|hb','山西|shanxi|sx','辽宁|liaolin|ln','吉林|jinlin|jl','黑龙江|heilongjiang|hlj','江苏|jiangsu|js','浙江|zhejiang|zj','安徽|anhui|ah','福建|fujian|fj','江西|jiangxi|jx','山东|shandong|sd','河南|henan|hn','湖北|hubei|hb','湖南|hunan|hn','广东|guangdong|gd','海南|hainan|hn','四川|sichuan|sc','贵州|guizhou|gz','云南|yunnan|yn','陕西|shanxi|sx','甘肃|gansu|gs','青海|qinghai|qh','台湾|taiwan|tw','内蒙古|neimenggu|nmg','广西|guangxi|gx','西藏|xizang|xz','宁夏|ningxia|nx','新疆|xinjiang|xj','香港|xianggang|xg','澳门|aomen|am','北京市|beijing|bj','上海市|shanghai|sh','广州市|guangzhou|gz','深圳市|shenzhen|sz','南京市|nanjing|nj','杭州市|hangzhou|hz','天津市|tianjin|tj','重庆市|chongqing|cq','成都市|chengdu|cd','青岛市|qingdao|qd','苏州市|shuzhou|sz','无锡市|wuxi|wx','常州市|changzhou|cz','温州市|wenzhou|wz','武汉市|wuhan|wh','长沙市|changsha|cs','石家庄市|shijiazhuang|sjz','南昌市|nanchang|nc','三亚市|sanya|sy','合肥市|hefei|hf','郑州市|zhengzhou|zz','保定市|baoding|bd','唐山市|tangshan|ts','秦皇岛市|qinhuangdao|qhd','邯郸市|handan|hd','邢台市|xingtai|xt','张家口市|zhangjiakou|zjk','承德市|chengde|cd','衡水市|hengshui|hs','廊坊市|langfang|lf','沧州市|cangzhou|cz','太原市|taiyuan|ty','大同市|datong|dt','阳泉市|yangquan|yq','长治市|changzhi|cz','晋城市|jincheng|jc','朔州市|shuozhou|sz','晋中市|jinzhong|jz','运城市|yuncheng|yc','忻州市|xinzhou|xz','临汾市|linfen|lf','吕梁市|lvliang|ll','呼和浩特市|huhehaote|hhht','包头市|baotou|bt','乌海市|wuhai|wh','赤峰市|chifeng|cf','通辽市|tongliao|tl','鄂尔多斯市|eerduosi|eeds','呼伦贝尔市|hulunbeier|hlbe','巴彦淖尔市|bayannaoer|byne','乌兰察布市|wulanchabu|wlcb','兴安盟|xinganmeng|xam','锡林郭勒盟|xilinguolemeng|xlglm','阿拉善盟|alashanmeng|alsm','沈阳市|shenyang|sy','大连市|dalian|dl','鞍山市|anshan|as','抚顺市|fushun|fs','本溪市|benxi|bx','丹东市|dandong|dd','锦州市|jinzhou|jz','营口市|yingkou|yk','阜新市|fuxin|fx','辽阳市|liaoyang|ly','盘锦市|panjin|pj','铁岭市|tieling|tl','朝阳市|chaoyang|cy','葫芦岛市|huludao|hld','长春市|changchun|cc','吉林市|jilin|jl','四平市|siping|sp','辽源市|liaoyuan|ly','通化市|tonghua|th','白山市|baishan|bs','松原市|songyuan|sy','白城市|baicheng|bc','延边朝鲜族自治州|ybcxzzzz|ybcxzzzz','哈尔滨市|haerbin|heb','齐齐哈尔市|qiqihaer|qqhe','鸡西市|jixi|jx','鹤岗市|hegang|hg','双鸭山市|shuangyashan|sys','大庆市|daqing|dq','伊春市|yichun|yc','佳木斯市|jiamusi|jms','七台河市|qitaihe|qth','牡丹江市|mudanjiang|mdj','黑河市|heihe|hh','绥化市|suihua|sh','大兴安岭地区|daxinganling|dxaldq','徐州市|xuzhou|xz','南通市|nantong|nt','连云港市|lianyungang|lyg','淮安市|huaian|ha','盐城市|yancheng|yc','扬州市|yangzhou|yz','镇江市|zhenjiang|zj','泰州市|taizhou|tz','宿迁市|suqian|sq','宁波市|ningbo|nb','嘉兴市|jiaxing|jx','湖州市|huzhou|hz','绍兴市|shaoxing|sx','舟山市|zhoushan|zs','衢州市|quzhou|qz','金华市|jinhua|jh','台州市|taizhou|tz','丽水市|lishui|ls','芜湖市|wuhu|wh','蚌埠市|bengbu|bb','淮南市|huainan|hn','马鞍山市|maanshan|mas','淮北市|huaibei|hb','铜陵市|tongling|tl','安庆市|anqing|aq','黄山市|huangshan|hs','滁州市|chuzhou|cz','阜阳市|fuyang|fy','宿州市|suzhou|sz','巢湖市|chaohu|ch','六安市|luan|la','亳州市|bozhou|bz','池州市|chizhou|cz','宣城市|xuancheng|xc','福州市|fuzhou|fz','厦门市|xiamen|xm','莆田市|putian|pt','三明市|sanming|sm','泉州市|quanzhou|qz','漳州市|zhangzhou|zz','南平市|nanping|np','龙岩市|longyan|ly','宁德市|ningde|nd','景德镇市|jingdezhen|jdz','萍乡市|pingxiang|px','九江市|jiujiang|jj','新余市|xinyu|xy','鹰潭市|yingtan|yt','赣州市|ganzhou|gz','吉安市|jian|ja','宜春市|yichun|yc','抚州市|fuzhou|fz','上饶市|shangrao|sr','济南市|jinan|jn','淄博市|zibo|zb','枣庄市|zaozhuang|zz','东营市|dongying|dy','烟台市|yantai|yt','潍坊市|weifang|wf','济宁市|jining|jn','泰安市|taian|ta','威海市|weihai|wh','日照市|rizhao|rz','莱芜市|laiwu|lw','临沂市|linyi|ly','德州市|dezhou|dz','聊城市|liaocheng|lc','滨州市|binzhou|bz','菏泽市|heze|hz','开封市|kaifeng|kf','洛阳市|luoyang|ly','平顶山市|pingdingshan|pds','安阳市|anyang|ay','鹤壁市|hebi|hb','新乡市|xinxiang|xx','焦作市|jiaozuo|jz','濮阳市|puyang|py','许昌市|xuchang|xc','漯河市|luohe|lh','三门峡市|sanmenxia|smx','南阳市|nanyang|ny','商丘市|shangqiu|sq','信阳市|xinyang|xy','周口市|zhoukou|zk','驻马店市|zhumadian|zmd','济源市|jiyuan|jiyuan','黄石市|huangshi|hs','十堰市|shiyan|sy','宜昌市|yichang|yc','襄樊市|xiangfan|xf','鄂州市|ezhou|ez','荆门市|jingmen|jm','孝感市|xiaogan|xg','荆州市|jingzhou|jz','黄冈市|huanggang|hg','咸宁市|xianning|xn','随州市|suizhou|sz','恩施土家族苗族自治州|estjzmzzzz|estjzmzzzz','仙桃市|xiantao|xt','潜江市|qianjiang|qj','天门市|tianmen|tm','神农架林区|shennongjia|snjlq','株洲市|zhuzhou|zz','湘潭市|xiangtan|xt','衡阳市|hengyang|hy','邵阳市|shaoyang|sy','岳阳市|yueyang|yy','常德市|changde|cd','张家界市|zhangjiajie|zjj','益阳市|yiyang|yy','郴州市|chenzhou|cz','永州市|yongzhou|yz','怀化市|huaihua|hh','娄底市|loudi|ld','湘西土家族苗族自治州|xxtjzmzzzz|xxtjzmzzzz','韶关市|shaoguan|sg','珠海市|zhuhai|zh','汕头市|shantou|st','佛山市|foushan|fs','江门市|jiangmen|jm','湛江市|zhanjiang|jz','茂名市|maoming|mm','肇庆市|zhaoqing|zq','惠州市|huizhou|hz','梅州市|meizhou|mz','汕尾市|shanwei|sw','河源市|heyuan|hy','阳江市|yangjiang|yj','清远市|qingyuan|qy','东莞市|dongguan|dg','中山市|zhongshan|zs','潮州市|chaozhou|cz','揭阳市|jieyang|jy','云浮市|yunfu|yf','南宁市|nanning|nn','柳州市|liuzhou|lz','桂林市|guilin|gl','梧州市|wuzhou|wz','北海市|beihai|bh','防城港市|fangchenggang|fcg','钦州市|qinzhou|qz','贵港市|guigang|gg','玉林市|yulin|yl','百色市|baise|bs','贺州市|hezhou|hz','河池市|hechi|hc','来宾市|laibin|lb','崇左市|chongzuo|cz','海口市|haikou|hk','三亚市|sanya|sy','五指山市|wuzhishan|wzs','琼海市|qionghai|qh','儋州市|danzhou|dz','文昌市|wenchang|wc','万宁市|wanning|wn','东方市|dongfang|df','定安县|dingan|da','屯昌县|tunchang|tc','澄迈县|chengmai|cm','临高县|lingao|lg','白沙黎族自治县|bsnzzzx|bsnzzzx','昌江黎族自治县|cjlzzzx|cjlzzzx','乐东黎族自治县|ldlzzzx|ldlzzzx','陵水黎族自治县|lingshui|ls','保亭黎族苗族自治县|btlzmzzzx|btlzmzzzx','琼中黎族苗族自治县|qzlzmzzzx|qzlzmzzzx','西沙群岛|xishaqundao|xsqd','南沙群岛|nanshaqundao|nsqd','中沙群岛的岛礁及其海域|zhongshaqundao|zsqd','自贡市|zigong|zg','攀枝花市|panzhihua|pzh','泸州市|luzhou|lz','德阳市|deyang|dy','绵阳市|mianyang|my','广元市|guangyuan|gy','遂宁市|suining|sn','内江市|neijiang|nj','乐山市|leshan|ls','南充市|nanchong|nc','眉山市|meishan|ms','宜宾市|yibin|yb','广安市|guangan|ga','达州市|dazhou|dz','雅安市|yaan|ya','巴中市|bazhong|bz','资阳市|ziyang|zy','阿坝藏族羌族自治州|abzzqzzzz|abzzqzzzz','甘孜藏族自治州|gzzzzzz|gzzzzzz','凉山彝族自治州|lsyzzzz|lsyzzzz','贵阳市|guiyang|gy','六盘水市|liupanshui|lps','遵义市|zunyi|zy','安顺市|anshun|as','铜仁地区|tongren|tr','黔西南布依族苗族自治州|qxnbyzmzzzz|qxnbyzmzzzz','毕节地区|bijie|bj','黔东南苗族侗族自治州|qdnmzdzzzz|qdnmzdzzzz','黔南布依族苗族自治州|qnbyzmzzzz|qnbyzmzzzz','昆明市|kunming|km','曲靖市|qujing|qj','玉溪市|yuxi|yx','保山市|baoshan|bs','昭通市|zhaotong|zt','丽江市|lijiang|lj','思茅市|simao|sm','临沧市|lincang|lc','楚雄彝族自治州|cxyzzzz|cxyzzzz','红河哈尼族彝族自治州|hhhnzyzzzz|hhhnzyzzzz','文山壮族苗族自治州|wszzmzzzz|wszzmzzzz','西双版纳傣族自治州|xsbndzzzz|xsbndzzzz','大理白族自治州|dlbzzzz|dlbzzzz','德宏傣族景颇族自治州|dhdzjpzzzz|dhdzjpzzzz','怒江傈僳族自治州|njlszzzz|njlszzzz','迪庆藏族自治州|dqzzzzz|dqzzzzz','拉萨市|lasa|ls','昌都地区|changdudiqu|cd','山南地区|shannandiqu|sndq','日喀则地区|rikazediqu|rkzdq','那曲地区|naqudiqu|nqdq','阿里地区|alidiqu|aldq','林芝地区|linzhidiqu|lzdq','西安市|xian|xa','铜川市|tongchuan|tc','宝鸡市|baoji|bj','咸阳市|xianyang|xy','渭南市|weinan|wn','延安市|yanan|ya','汉中市|hanzhong|hz','榆林市|yulin|yl','安康市|ankang|ak','商洛市|shangluo|sl','兰州市|lanzhou|lz','嘉峪关市|jiayuguan|jyg','金昌市|jinchang|jc','白银市|baiyin|by','天水市|tianshui|ts','武威市|wuwei|ww','张掖市|zhangye|zy','平凉市|pingliang|pl','酒泉市|jiuquan|jq','庆阳市|qingyang|qy','定西市|dingxi|dx','陇南市|longnan|ln','临夏回族自治州|lxhzzzz|lxhzzzz','甘南藏族自治州|gnzzzzz|gnzzzzz','西宁市|xining|xn','海东地区|haidongdiqu|hddq','海北藏族自治州|hbzzzzz|hbzzzzz','黄南藏族自治州|hnzzzzz|hnzzzzz','海南藏族自治州|hnzzzzz|hnzzzzz','果洛藏族自治州|glzzzzz|hlzzzzz','玉树藏族自治州|yszzzzz|yszzzzz','海西蒙古族藏族自治州|hxmgzzzzzz|hxmgzzzzzz','银川市|yinchuan|yc','石嘴山市|shizuishan|szs','吴忠市|wuzhong|wz','固原市|guyuan|gy','中卫市|zhongwei|zw','乌鲁木齐市|wulumuqi|wlmq','克拉玛依市|kelamayi|klmy','吐鲁番地区|tulufandiqu|tlfdq','哈密地区|hamidiqu|hmdq','昌吉回族自治州|cjhzzzz|cjhzzzz','博尔塔拉蒙古自治州|betlmgzzz|betlmgzzz','巴音郭楞蒙古自治州|byglmgzzz|byglmgzzz','阿克苏地区|akesudiqu|aksdq','克孜勒苏柯尔克孜自治州|kzlskekzzzz|kzlskekzzzz','喀什地区|kashidiqu|ksdq','和田地区|hetian|ht','伊犁哈萨克自治州|ylhskzzz|ylhskzzz','塔城地区|tachengdiqu|tcdq','阿勒泰地区|aletaidiqu|altdq','石河子市|shihezi|shz','阿拉尔市|alaer|ale','图木舒克市|tumushuke|tmsk','五家渠市|wujiaqu|wjq','台北市|taibei|tb','高雄市|gaoxiong|gx','基隆市|jilong|jl','台中市|taizhong|tz','台南市|tainan|tn','新竹市|xinzhu|xz','嘉义市|jiayi|jy','台北县|taibeixian|tbx','宜兰县|yilanxian|ylx','桃园县|taoyuanxian|tyx','新竹县|xinzhuxian|xzx','苗栗县|miaolixian|mlx','台中县|taizhongxian|tzx','彰化县|zhanghuaxian|zhx','南投县|nantouxian|ntx','云林县|yunlinxian|ylx','嘉义县|jiayixian|jyx','台南县|tainanxian|tnx','高雄县|gaoxiongxian|gxx','屏东县|pingdongxian|pdx','澎湖县|penghuxian|phx','台东县|taidongxian|tdx','花莲县|hualianxian|hlx','中西区|zhongxiqu|zxq','东区|dongqu|dq','九龙城区|jiulongchengqu|jlcq','观塘区|guantangqu|gtq','南区|nanqu|nq','深水埗区|shenshuibuqu|ssbq','黄大仙区|huangdaxianqu|hdxq','湾仔区|wanzaiqu|wzq','油尖旺区|youjianwangqu|yjwq','离岛区|lidaoqu|ldq','葵青区|kuiqingqu|kqq','北区|beiqu|bq','西贡区|xigongqu|xgq','沙田区|shatianqu|stq','屯门区|tunmenqu|tmq','大埔区|dabuqu|dbq','荃湾区|quanwanqu|qwq','元朗区|yuanlangqu|ylq','花地玛堂区|huadimatangqu|hdmtq','圣安多尼堂区|shenganduonitangqu|sadntq','大堂区|datangqu|dtq','望德堂区|wangdetangqu|wdtq','风顺堂区|fengshuntangqu|fstq','嘉模堂区|jiamotangqu|jmtq','圣方济各堂区|shengfangjigetangqu|sfjgtq']; /* 正则表达式 筛选中文城市名、拼音、首字母 */ vcity.regex = /^([\u4e00-\u9fa5\uf900-\ufa2d]+)\|(\w+)\|(\w)\w*$/i; vcity.regexchiese = /([\u4e00-\u9fa5\uf900-\ufa2d]+)/; /* * * 格式化城市数组为对象ocity,按照a-h,i-p,q-z,hot热门城市分组: * {hot:{hot:[]},abcdefgh:{a:[1,2,3],b:[1,2,3]},ijklmnop:{i:[1.2.3],j:[1,2,3]},qrstuvwxyz:{}} * */ (function () { var citys = vcity.allcity, match, letter, regex = vcity.regex, reg2 = /^[a-e]$/i, reg3 = /^[f-k]$/i, reg4 = /^[l-q]$/i,reg5 = /^[r-x]$/i,reg6 = /^[yz]$/i; if (!vcity.ocity) { vcity.ocity = {abcde:{},fghjk:{},lmnpq:{},rstwx:{},yz:{}}; //console.log(citys.length); for (var i = 0, n = citys.length; i < n; i++) { match = regex.exec(citys[i]); letter = match[3].touppercase(); if (reg2.test(letter)) { if (!vcity.ocity.abcde[letter]) vcity.ocity.abcde[letter] = []; vcity.ocity.abcde[letter].push(match[1]); } else if (reg3.test(letter)) { if (!vcity.ocity.fghjk[letter]) vcity.ocity.fghjk[letter] = []; vcity.ocity.fghjk[letter].push(match[1]); } else if (reg4.test(letter)) { if (!vcity.ocity.lmnpq[letter]) vcity.ocity.lmnpq[letter] = []; vcity.ocity.lmnpq[letter].push(match[1]); }else if (reg5.test(letter)) { if (!vcity.ocity.rstwx[letter]) vcity.ocity.rstwx[letter] = []; vcity.ocity.rstwx[letter].push(match[1]); }else if (reg6.test(letter)) { if (!vcity.ocity.yz[letter]) vcity.ocity.yz[letter] = []; vcity.ocity.yz[letter].push(match[1]); } } } })(); /* 城市html模板 */ vcity._template = [ '

支持中文/英文/简拼输入

', '' ]; /* * * 城市控件构造函数 * @cityselector * */ vcity.cityselector = function () { this.initialize.apply(this, arguments); }; vcity.cityselector.prototype = { constructor:vcity.cityselector, /* 初始化 */ initialize :function (options) { var input = options.input; this.input = vcity._m.$('#'+ input); this.inputevent(); }, /* * /* * * @createwarp * 创建城市box html 框架 * */ createwarp:function(){ var inputpos = vcity._m.getpos(this.input); var div = this.rootdiv = document.createelement('div'); var that = this; // 设置div阻止冒泡 vcity._m.on(this.rootdiv,'click',function(event){ vcity._m.stoppropagation(event); }); // 设置点击文档隐藏弹出的城市选择框 vcity._m.on(document, 'click', function (event) { event = vcity._m.getevent(event); var target = vcity._m.gettarget(event); if(target == that.input) return false; //console.log(target.classname); if (that.citybox)vcity._m.addclass('hide', that.citybox); if (that.ul)vcity._m.addclass('hide', that.ul); if(that.myiframe)vcity._m.addclass('hide',that.myiframe); }); div.classname = 'cityselector'; div.style.position = 'absolute'; div.style.left = inputpos.left + 'px'; div.style.top = inputpos.bottom + 5 + 'px'; div.style.zindex = 999999; // 判断是否ie6,如果是ie6需要添加iframe才能遮住select框 var isie = (document.all) ? true : false; var isie6 = this.isie6 = isie && !window.xmlhttprequest; if(isie6){ var myiframe = this.myiframe = document.createelement('iframe'); myiframe.frameborder = '0'; myiframe.src = 'about:blank'; myiframe.style.position = 'absolute'; myiframe.style.zindex = '-1'; this.rootdiv.appendchild(this.myiframe); } var childdiv = this.citybox = document.createelement('div'); childdiv.classname = 'citybox'; childdiv.id = 'citybox'; childdiv.innerhtml = vcity._template.join(''); var hotcity = this.hotcity = document.createelement('div'); hotcity.classname = 'hotcity'; childdiv.appendchild(hotcity); div.appendchild(childdiv); this.createhotcity(); }, /* * * @createhotcity * tab下面div:hot,a-h,i-p,q-z 分类html生成,dom操作 * {hot:{hot:[]},abcdefgh:{a:[1,2,3],b:[1,2,3]},ijklmnop:{},qrstuvwxyz:{}} **/ createhotcity:function(){ var odiv,odl,odt,odd,odda=[],str,key,ckey,sortkey,regex = vcity.regex, ocity = vcity.ocity; for(key in ocity){ odiv = this[key] = document.createelement('div'); // 先设置全部隐藏hide odiv.classname = key + ' ' + 'citytab hide'; sortkey=[]; for(ckey in ocity[key]){ sortkey.push(ckey); // ckey按照abcdedg顺序排序 sortkey.sort(); } for(var j=0,k = sortkey.length;j' + ocity[key][sortkey[j]][i] + ''; odda.push(str); } odd.innerhtml = odda.join(''); odl.appendchild(odt); odl.appendchild(odd); odiv.appendchild(odl); } // 移除热门城市的隐藏css vcity._m.removeclass('hide',ocity[0]); this.hotcity.appendchild(odiv); } vcity._m.removeclass('hide',ocity[0]); document.getelementbyid("search-box").appendchild(this.rootdiv); /* ie6 */ this.changeiframe(); this.tabchange(); this.linkevent(); }, /* * * tab按字母顺序切换 * @ tabchange * */ tabchange:function(){ var lis = vcity._m.$('li',this.citybox); var divs = vcity._m.$('div',this.hotcity); var that = this; vcity._m.removeclass('hide',divs[0]); for(var i=0,n=lis.length;i 0){ var li = lis[0]; var bs = li.children; if(bs && bs['length'] > 1){ that.input.value = bs[0].innerhtml; } }else{ that.input.value = ''; } } } }); vcity._m.on(this.input,'keyup',function(event){ event = event || window.event; var keycode = event.keycode; vcity._m.addclass('hide',that.citybox); that.createul(); /* 移除iframe 的hide 样式 */ vcity._m.removeclass('hide',that.myiframe); // 下拉菜单显示的时候捕捉按键事件 if(that.ul && !vcity._m.hasclass('hide',that.ul) && !that.isempty){ that.keyboardevent(event,keycode); } }); }, /* * * 生成下拉选择列表 * @ createul * */ createul:function () { //console.log('createul'); var str; var value = vcity._m.trim(this.input.value); // 当value不等于空的时候执行 if (value !== '') { var reg = new regexp("^" + value + "|\\|" + value, 'gi'); // 此处需设置中文输入法也可用onpropertychange var searchresult = []; for (var i = 0, n = vcity.allcity.length; i < n; i++) { if (reg.test(vcity.allcity[i])) { var match = vcity.regex.exec(vcity.allcity[i]); if (searchresult.length !== 0) { str = '
  • ' + match[1] + '
  • '; } else { str = '
  • ' + match[1] + '
  • '; } searchresult.push(str); } } this.isempty = false; // 如果搜索数据为空 if (searchresult.length == 0) { this.isempty = true; str = '
  • 对不起,没有找到 "' + value + '"
  • '; searchresult.push(str); } // 如果slideul不存在则添加ul if (!this.ul) { var ul = this.ul = document.createelement('ul'); ul.classname = 'cityslide mcustomscrollbar'; this.rootdiv && this.rootdiv.appendchild(ul); // 记录按键次数,方向键 this.count = 0; } else if (this.ul && vcity._m.hasclass('hide', this.ul)) { this.count = 0; vcity._m.removeclass('hide', this.ul); } this.ul.innerhtml = searchresult.join(''); /* ie6 */ this.changeiframe(); // 绑定li事件 this.lievent(); }else{ vcity._m.addclass('hide',this.ul); vcity._m.removeclass('hide',this.citybox); vcity._m.removeclass('hide',this.myiframe); this.changeiframe(); } }, /* ie6的改变遮罩select 的 iframe尺寸大小 */ changeiframe:function(){ if(!this.isie6)return; this.myiframe.style.width = this.rootdiv.offsetwidth + 'px'; this.myiframe.style.height = this.rootdiv.offsetheight + 'px'; }, /* * * 特定键盘事件,上、下、enter键 * @ keyboardevent * */ keyboardevent:function(event,keycode){ var lis = vcity._m.$('li',this.ul); var len = lis.length; switch(keycode){ case 40: //向下箭头↓ this.count++; if(this.count > len-1) this.count = 0; for(var i=0;i