原生Js汉语拼音首字母匹配城市名/自动提示列表

根据城市的汉语名称首字母把城市排序,基本思路:

1.处理数据,按照需要的格式分别添加{HOT:{hot:[],ABCDEFG:{a:[1,2,3],b:[1,2,3]},HIGHLMN:{},OPQRSTU:{},VWXYZ:{}}

2.解析数据 创建数据div 给需要功能的input分别添加事件

效果预览:http://jsfiddle.net/dtdxrk/xdftL/embedded/result/

原生Js汉语拼音首字母匹配城市名/自动提示列表

 

  1 <!DOCTYPE html>

  2 <html>

  3 <head>

  4    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  5    <title>原生Js汉语拼音首字母匹配城市名</title>

  6    <style type="text/css">

  7       *{margin: 0;padding: 0}

  8 

  9        /*弹出城市列表*/

 10       div#popCity{ visibility: hidden; font: 13px Arial;position: absolute;top: 0;left: 0;background-color: #fff; box-shadow: 2px 2px 3px rgba(0,0,0,0.3);border: 1px solid #85BEE5;width: 400px;}

 11       div#popCity h1{font-size: 14px;background-color:#85BEE5;padding: 5px;color: #fff; } 

 12       ul#popMenu{margin-top: 5px;overflow: hidden;zoom:1;}

 13       ul#popMenu li{display: block;float:left;margin-left:5px; cursor: pointer; font: 13px Arial;border: 1px solid #85BEE5;background-color: #e1effe;padding: 2px 5px;height: 16px;}

 14       ul#popMenu li.active{background-color: #fff;border-bottom: 1px solid #fff;position: relative;}

 15       div#popCityCon{border-top: 1px solid #85BEE5;margin-top: -1px;padding: 5px 0;}

 16       div#popCityCon div{display: none;}

 17       div#popCityCon div.active{display: block;}

 18       div#popCityCon dl{overflow: hidden;margin:2px 0;overflow: hidden;}

 19       div#popCityCon dt{float: left;width: 50px;text-align: center;color: #666;}

 20       div#popCityCon dd{float: left;width: 350px;}

 21       div#popCityCon a{ cursor: pointer;padding: 2px 5px;color: #3b5998;display: inline-block;}

 22       div#popCityCon a:hover{background-color: orange;color: #fff;}

 23       div#popCityCon a.active{background-color: orange;color: #fff;}

 24       div#popCityCon div.active{display: block;}

 25 

 26       /*搜索提示框*/

 27       #popList{ visibility: visible;border: 1px solid #ccc;font: 14px Arial;background-color: #fff;position: absolute;}

 28       #popList ul{width: 100%;list-style-type: none;}

 29       #popList ul li{padding: 5px;}

 30       #popList ul li:hover{background-color: #ececec;cursor:default; }

 31       #popList ul li.active{background-color: #ececec;cursor:default; }

 32    </style>

 33 </head>

 34 <body>

 35 

 36 <input type="text" class="cityinput" id="city1" value="城市名">

 37 <br/>

 38 

 39 <select name="IE6">

 40     <option>1</option>

 41     <option>2</option>

 42     <option>3</option>

 43 </select>

 44 <select name="IE6">

 45     <option>1</option>

 46     <option>2</option>

 47     <option>3</option>

 48 </select>

 49 <select name="IE6" >

 50     <option>1</option>

 51     <option>2</option>

 52     <option>3</option>

 53 </select>

 54 <select name="IE6" >

 55     <option>1</option>

 56     <option>2</option>

 57     <option>3</option>

 58 </select>

 59 <select name="IE6">

 60     <option>1</option>

 61     <option>2</option>

 62     <option>3</option>

 63 </select>

 64 <select name="IE6">

 65     <option>1</option>

 66     <option>2</option>

 67     <option>3</option>

 68 </select>

 69 <select name="IE6">

 70     <option>1</option>

 71     <option>2</option>

 72     <option>3</option>

 73 </select>

 74 <select name="IE6">

 75     <option>1</option>

 76     <option>2</option>

 77     <option>3</option>

 78 </select>

 79 <input type="text" class="cityinput" id="city2" value="城市名">

 80 <select name="IE6" >

 81     <option>1</option>

 82     <option>2</option>

 83     <option>3</option>

 84 </select>

 85 <select name="IE6" >

 86     <option>1</option>

 87     <option>2</option>

 88     <option>3</option>

 89 </select>

 90 <br/>

 91 <select name="IE6">

 92     <option>1</option>

 93     <option>2</option>

 94     <option>3</option>

 95 </select>

 96 <select name="IE6">

 97     <option>1</option>

 98     <option>2</option>

 99     <option>3</option>

100 </select>

101 <select name="IE6">

102     <option>1</option>

103     <option>2</option>

104     <option>3</option>

105 </select>

106 <select name="IE6">

107     <option>1</option>

108     <option>2</option>

109     <option>3</option>

110 </select>

111 <select name="IE6" >

112     <option>1</option>

113     <option>2</option>

114     <option>3</option>

115 </select>

116 <select name="IE6" >

117     <option>1</option>

118     <option>2</option>

119     <option>3</option>

120 </select>

121 <select name="IE6">

122     <option>1</option>

123     <option>2</option>

124     <option>3</option>

125 </select>

126 <select name="IE6">

127     <option>1</option>

128     <option>2</option>

129     <option>3</option>

130 </select>

131 <br/>

132 <select name="IE6">

133     <option>1</option>

134     <option>2</option>

135     <option>3</option>

136 </select>

137 <select name="IE6">

138     <option>1</option>

139     <option>2</option>

140     <option>3</option>

141 </select>

142 <select name="IE6">

143     <option>1</option>

144     <option>2</option>

145     <option>3</option>

146 </select>

147 <br/>

148 <select name="IE6">

149     <option>1</option>

150     <option>2</option>

151     <option>3</option>

152 </select>

153 <select name="IE6">

154     <option>1</option>

155     <option>2</option>

156     <option>3</option>

157 </select>

158 <select name="IE6">

159     <option>1</option>

160     <option>2</option>

161     <option>3</option>

162 </select>

163 <br/>

164 <select name="IE6">

165     <option>1</option>

166     <option>2</option>

167     <option>3</option>

168 </select>

169 <select name="IE6">

170     <option>1</option>

171     <option>2</option>

172     <option>3</option>

173 </select>

174 <select name="IE6">

175     <option>1</option>

176     <option>2</option>

177     <option>3</option>

178 </select>

179 <br/>

180 <select name="IE6">

181     <option>1</option>

182     <option>2</option>

183     <option>3</option>

184 </select>

185 <select name="IE6">

186     <option>1</option>

187     <option>2</option>

188     <option>3</option>

189 </select>

190 <select name="IE6">

191     <option>1</option>

192     <option>2</option>

193     <option>3</option>

194 </select>

195 <br/>

196 <select name="IE6">

197     <option>1</option>

198     <option>2</option>

199     <option>3</option>

200 </select>

201 <select name="IE6">

202     <option>1</option>

203     <option>2</option>

204     <option>3</option>

205 </select>

206 <select name="IE6">

207     <option>1</option>

208     <option>2</option>

209     <option>3</option>

210 </select>

211 <br/>

212 <select name="IE6">

213     <option>1</option>

214     <option>2</option>

215     <option>3</option>

216 </select>

217 <select name="IE6">

218     <option>1</option>

219     <option>2</option>

220     <option>3</option>

221 </select>

222 <select name="IE6">

223     <option>1</option>

224     <option>2</option>

225     <option>3</option>

226 </select>

227 <br/>

228 <select name="IE6">

229     <option>1</option>

230     <option>2</option>

231     <option>3</option>

232 </select>

233 <select name="IE6">

234     <option>1</option>

235     <option>2</option>

236     <option>3</option>

237 </select>

238 <select name="IE6">

239     <option>1</option>

240     <option>2</option>

241     <option>3</option>

242 </select>

243 <br/>

244 <select name="IE6">

245     <option>1</option>

246     <option>2</option>

247     <option>3</option>

248 </select>

249 <select name="IE6">

250     <option>1</option>

251     <option>2</option>

252     <option>3</option>

253 </select>

254 <select name="IE6">

255     <option>1</option>

256     <option>2</option>

257     <option>3</option>

258 </select>

259 <br/>

260 <select name="IE6">

261     <option>1</option>

262     <option>2</option>

263     <option>3</option>

264 </select>

265 <select name="IE6">

266     <option>1</option>

267     <option>2</option>

268     <option>3</option>

269 </select>

270 <select name="IE6">

271     <option>1</option>

272     <option>2</option>

273     <option>3</option>

274 </select>

275 <br/>

276 <select name="IE6">

277     <option>1</option>

278     <option>2</option>

279     <option>3</option>

280 </select>

281 <select name="IE6">

282     <option>1</option>

283     <option>2</option>

284     <option>3</option>

285 </select>

286 <select name="IE6">

287     <option>1</option>

288     <option>2</option>

289     <option>3</option>

290 </select>

291 <br/>

292 <select name="IE6">

293     <option>1</option>

294     <option>2</option>

295     <option>3</option>

296 </select>

297 <select name="IE6">

298     <option>1</option>

299     <option>2</option>

300     <option>3</option>

301 </select>

302 <select name="IE6">

303     <option>1</option>

304     <option>2</option>

305     <option>3</option>

306 </select>

307 <script type="text/javascript">

308 var _CalF = {

309    $ : function(object){//选择器

310      if(object === undefined ) return;

311      var getArr = function(name,tagName,attr){

312            var tagName = tagName || '*',

313                eles = document.getElementsByTagName(tagName),

314                clas = (typeof document.body.style.maxHeight === "undefined") ? "className" : "class";//ie6

315                attr = attr || clas,

316                Arr = [];

317            for(var i=0;i<eles.length;i++){

318              if(eles[i].getAttribute(attr)==name){

319                Arr.push(eles[i]);

320              }

321            }

322            return Arr;

323          };

324    

325      if(object.indexOf('#') === 0){  //#id 

326        return document.getElementById(object.substring(1));

327      }else if(object.indexOf('.') === 0){  //.class

328        return getArr(object.substring(1));

329      }else if(object.match(/=/g)){  //attr=name

330        return getArr(object.substring(object.search(/=/g)+1),null,object.substring(0,object.search(/=/g)));

331      }else if(object.match(/./g)){ //tagName.className

332        return getArr(object.split('.')[1],object.split('.')[0]);

333      }

334    },

335    addHandler:function(node, type, handler){

336        node.addEventListener ? node.addEventListener(type, handler, false) : node.attachEvent('on'+ type, handler);

337    },

338    removeHandler: function (node, type, handler) {

339        node.removeEventListener ? node.removeEventListener(type, handler, false) : node.detachEvent("on" + type, handler);

340    },

341    getPosition : function(obj) { //获取元素在页面里的位置和宽高

342       var top = 0,

343           left = 0,

344           width = obj.offsetWidth,

345           height = obj.offsetHeight;

346   

347       while(obj.offsetParent){

348           top += obj.offsetTop;

349           left += obj.offsetLeft;

350           obj = obj.offsetParent;

351       }

352   

353       return {"top":top,"left":left,"width":width,"height":height};

354    },

355    addClass:function(c,node){  // 添加样式名

356        node.className = node.className + ' ' + c;

357    },

358    removeClass:function(c,node){ // 移除样式名

359        var reg = new RegExp("(^|\\s+)" + c + "(\\s+|$)","g");

360        node.className = node.className.replace(reg, '');

361    },

362    stopPropagation:function(event){  // 阻止冒泡

363        var event = event || window.event;

364        event.stopPropagation ? event.stopPropagation() : event.cancelBubble = true;

365    },

366    getStyle : function(obj, attr){  //获取css属性

367     if(obj.currentStyle){

368       return obj.currentStyle[attr];

369     }else{

370       return getComputedStyle(obj, false)[attr];

371     }

372    },

373    ie6 : function(){

374       return !!window.ActiveXObject && !window.XMLHttpRequest;

375    }

376  

377  };

378 

379 var cityData = ['北京|beijing|bj','上海|shanghai|sh', '重庆|chongqing|cq',  '深圳|shenzhen|sz', '广州|guangzhou|gz', '杭州|hangzhou|hz',

380     '南京|nanjing|nj', '苏州|shuzhou|sz', '天津|tianjin|tj', '成都|chengdu|cd', '南昌|nanchang|nc', '三亚|sanya|sy','青岛|qingdao|qd',

381     '厦门|xiamen|xm', '西安|xian|xa','长沙|changsha|cs','合肥|hefei|hf','西藏|xizang|xz', '内蒙古|neimenggu|nmg', '安庆|anqing|aq', '阿泰勒|ataile|atl', '安康|ankang|ak',

382     '阿克苏|akesu|aks', '包头|baotou|bt', '北海|beihai|bh', '百色|baise|bs','保山|baoshan|bs', '长治|changzhi|cz', '长春|changchun|cc', '常州|changzhou|cz', '昌都|changdu|cd',

383     '朝阳|chaoyang|cy', '常德|changde|cd', '长白山|changbaishan|cbs', '赤峰|chifeng|cf', '大同|datong|dt', '大连|dalian|dl', '达县|daxian|dx', '东营|dongying|dy', '大庆|daqing|dq', '丹东|dandong|dd',

384     '大理|dali|dl', '敦煌|dunhuang|dh', '鄂尔多斯|eerduosi|eeds', '恩施|enshi|es', '福州|fuzhou|fz', '阜阳|fuyang|fy', '贵阳|guiyang|gy',

385     '桂林|guilin|gl', '广元|guangyuan|gy', '格尔木|geermu|gem', '呼和浩特|huhehaote|hhht', '哈密|hami|hm',

386     '黑河|heihe|hh', '海拉尔|hailaer|hle', '哈尔滨|haerbin|heb', '海口|haikou|hk', '黄山|huangshan|hs', '邯郸|handan|hd',

387     '汉中|hanzhong|hz', '和田|hetian|ht', '晋江|jinjiang|jj', '锦州|jinzhou|jz', '景德镇|jingdezhen|jdz',

388     '嘉峪关|jiayuguan|jyg', '井冈山|jinggangshan|jgs', '济宁|jining|jn', '九江|jiujiang|jj', '佳木斯|jiamusi|jms', '济南|jinan|jn',

389     '喀什|kashi|ks', '昆明|kunming|km', '康定|kangding|kd', '克拉玛依|kelamayi|klmy', '库尔勒|kuerle|kel', '库车|kuche|kc', '兰州|lanzhou|lz',

390     '洛阳|luoyang|ly', '丽江|lijiang|lj', '林芝|linzhi|lz', '柳州|liuzhou|lz', '泸州|luzhou|lz', '连云港|lianyungang|lyg', '黎平|liping|lp',

391     '连成|liancheng|lc', '拉萨|lasa|ls', '临沧|lincang|lc', '临沂|linyi|ly', '芒市|mangshi|ms', '牡丹江|mudanjiang|mdj', '满洲里|manzhouli|mzl', '绵阳|mianyang|my',

392     '梅县|meixian|mx', '漠河|mohe|mh', '南充|nanchong|nc', '南宁|nanning|nn', '南阳|nanyang|ny', '南通|nantong|nt', '那拉提|nalati|nlt',

393     '宁波|ningbo|nb', '攀枝花|panzhihua|pzh', '衢州|quzhou|qz', '秦皇岛|qinhuangdao|qhd', '庆阳|qingyang|qy', '齐齐哈尔|qiqihaer|qqhe',

394     '石家庄|shijiazhuang|sjz',  '沈阳|shenyang|sy', '思茅|simao|sm', '铜仁|tongren|tr', '塔城|tacheng|tc', '腾冲|tengchong|tc', '台州|taizhou|tz',

395     '通辽|tongliao|tl', '太原|taiyuan|ty', '威海|weihai|wh', '梧州|wuzhou|wz', '文山|wenshan|ws', '无锡|wuxi|wx', '潍坊|weifang|wf', '武夷山|wuyishan|wys', '乌兰浩特|wulanhaote|wlht',

396     '温州|wenzhou|wz', '乌鲁木齐|wulumuqi|wlmq', '万州|wanzhou|wz', '乌海|wuhai|wh', '兴义|xingyi|xy', '西昌|xichang|xc',  '襄樊|xiangfan|xf',

397     '西宁|xining|xn', '锡林浩特|xilinhaote|xlht', '西双版纳|xishuangbanna|xsbn', '徐州|xuzhou|xz', '义乌|yiwu|yw', '永州|yongzhou|yz', '榆林|yulin|yl', '延安|yanan|ya', '运城|yuncheng|yc',

398     '烟台|yantai|yt', '银川|yinchuan|yc', '宜昌|yichang|yc', '宜宾|yibin|yb', '盐城|yancheng|yc', '延吉|yanji|yj', '玉树|yushu|ys', '伊宁|yining|yn', '珠海|zhuhai|zh', '昭通|zhaotong|zt',

399     '张家界|zhangjiajie|zjj', '舟山|zhoushan|zs', '郑州|zhengzhou|zz', '中卫|zhongwei|zw', '芷江|zhijiang|zj', '湛江|zhanjiang|zj'];

400 

401 

402 var iCity = {

403   inputSelector : function(id){ //input添加点击事件

404       var input =document.getElementById(id);

405       _CalF.addHandler(input,'click',function(){

406           iCity.input = input;

407           popList.style.visibility = "hidden";

408           iCity.outClick();

409           iCity.aClick();

410           iCity.getPosition();

411       });

412       _CalF.addHandler(input,'keyup',function(event){

413             var event = event || window.event,

414                 keycode = event.keyCode;

415             popCity.style.visibility = "hidden";

416             iCity.createUL();

417       });

418   },

419   _temp : [

420     "<h1>选择城市(支持汉字/拼音/拼音缩写)</h1>",

421     "<ul id='popMenu'>",

422     "<li class='active'>热门城市</li>",

423     "<li>ABCDEFG</li>",

424     "<li>HIGHLMN</li>",

425     "<li>OPQRSTU</li>",

426     "<li>VWXYZ</li>",

427     "</ul>",

428     "<div id='popCityCon'></div>"

429   ],

430   cityClass : function(){ //城市分类

431       if(!this.citys){

432         //{HOT:{hot:[],ABCDEFG:{a:[1,2,3],b:[1,2,3]},HIGHLMN:{},OPQRSTU:{},VWXYZ:{}}

433         this.citys = {"hotCity":[],"ABCDEFG":{},"HIGHLMN":{},"OPQRSTU":{},"VWXYZ":{}};

434         var make,fn,name,

435             reg1 = /^[a-g]$/i, reg2 = /^[h-n]$/i, reg3 = /^[o-u]$/i,reg4 = /^[v-z]$/i;

436 

437         for(i in cityData){

438           make = cityData[i].split("|");  //分割成数组

439           fn = make[2].substring(0,1).toUpperCase();  //获取英文第一个字母转换成大写

440           name = make[0];

441           if(reg1.test(fn)){

442             if(!this.citys.ABCDEFG[fn]) this.citys.ABCDEFG[fn]=[];

443             this.citys.ABCDEFG[fn].push(name)

444           }else if(reg2.test(fn)){

445             if(!this.citys.HIGHLMN[fn]) this.citys.HIGHLMN[fn]=[];

446             this.citys.HIGHLMN[fn].push(name)

447           }else if(reg3.test(fn)){

448             if(!this.citys.OPQRSTU[fn]) this.citys.OPQRSTU[fn]=[];

449             this.citys.OPQRSTU[fn].push(name)

450           }else if(reg4.test(fn)){

451             if(!this.citys.VWXYZ[fn]) this.citys.VWXYZ[fn]=[];

452             this.citys.VWXYZ[fn].push(name)

453           }

454 

455           if(i<20){

456             if(!this.citys.hotCity["HOT"]) this.citys.hotCity["HOT"]=[];

457             this.citys.hotCity["HOT"].push(name);

458           }

459         }

460 

461       }

462   },

463   creatDiv : function(){

464       var popCity = document.createElement("div");  //城市div

465       popCity.id = "popCity";

466       popCity.innerHTML = this._temp.join("");

467       _CalF.addHandler(popCity,"click", _CalF.stopPropagation); //阻止事件冒泡

468 

469       var popList = document.createElement("div");  //输入提示div

470        _CalF.addHandler(popList,"click", _CalF.stopPropagation); //阻止事件冒泡

471       popList.id="popList";

472 

473       document.body.appendChild(popCity);

474       document.body.appendChild(popList);

475       this.popCity = popCity;

476       this.popList = popList;

477   },

478   getData :function(){

479       this.creatDiv();

480       this.cityClass();

481       var i,div,arr,dl,dt,dd,_tempDD,

482           popCityCon = _CalF.$("#popCityCon"),

483           data = this.citys;

484 

485       for(var i in data){

486         div = document.createElement("div");

487         div.id = i;

488         if(div.id=="hotCity") div.className ="active";

489         arr=[];

490 

491         for(var b in data[i]){

492           arr.push(b);

493           arr.sort();

494         }

495 

496         for(var c in arr){

497           dl = document.createElement("dl");

498           dt = document.createElement("dt");

499           dd = document.createElement("dd");

500           dt.innerHTML = arr[c];

501 

502           _tempDD = [];

503           for(var d in data[i][arr[c]]){

504             _tempDD.push("<a>"+data[i][arr[c]][d]+"</a>");

505           }

506           dd.innerHTML = _tempDD.join("");

507 

508           dl.appendChild(dt);

509           dl.appendChild(dd);

510           div.appendChild(dl);

511         }

512 

513         popCityCon.appendChild(div);

514       }

515       if(_CalF.ie6()){

516         popCityCon.appendChild(this.createIframe());

517         this.aHover();

518       }

519       this.tabClick();

520   },

521   tabClick : function(){

522       var index,

523           popMenu = _CalF.$("#popMenu"),

524           popCityCon = _CalF.$("#popCityCon"),

525           myIframe = _CalF.$("#myIframe"),

526           popCity = _CalF.$("#popCity"),

527           lis = popMenu.getElementsByTagName("li"),

528           divs = popCityCon.getElementsByTagName("div");

529       for(var i=0;i<lis.length;i++){

530           lis[i].index = i;

531           lis[i].onclick = function(){

532               for(var j=0;j<i;j++){

533                 _CalF.removeClass("active",lis[j]);

534                 _CalF.removeClass("active",divs[j]);

535               }

536             _CalF.addClass("active",this);

537             _CalF.addClass("active",divs[this.index]);

538             if(_CalF.ie6()){myIframe.style.height = popCity.offsetHeight + 'px';};

539           }

540       }

541   },

542   aClick : function(){

543       var that = this,

544           popCityCon = _CalF.$("#popCityCon"),

545           links = popCityCon.getElementsByTagName("a");

546       for(var i in links){

547         links[i].onclick = function(){

548             that.input.value = this.innerHTML;

549             that.popCity.style.visibility = "hidden";

550         }        

551       }

552   },

553   aHover : function(){

554       var that = this,

555           popCityCon = _CalF.$("#popCityCon"),

556           links = popCityCon.getElementsByTagName("a");

557       for(var i in links){

558           links[i].onmouseover = function(){_CalF.addClass("active",this)}

559           links[i].onmouseout = function(){_CalF.removeClass("active",this)}

560       }

561   },

562   liClick :function(){

563       var that = this,

564           popList = that.popList,

565           lis = popList.getElementsByTagName("li");

566       for(var i=0, len = lis.length; i<len; i++){

567           lis[i].onclick = function(){

568              that.input.value = this.innerHTML;

569              that.popList.style.visibility = "hidden";

570           }

571       }

572   },

573   liHover :function(){

574       var that = this,

575           popList = that.popList,

576           lis = popList.getElementsByTagName("li");

577       for(var i=0, len = lis.length; i<len; i++){

578         lis[i].onmouseover = function(){_CalF.addClass("active",this)}

579         lis[i].onmouseout = function(){_CalF.removeClass("active",this)}

580       }

581   },

582   getPosition : function(){

583       var Pos = _CalF.getPosition(iCity.input);

584       popCity.style.top =  Pos.top + Pos.height + "px";

585       popCity.style.left = Pos.left + "px";

586       popCity.style.visibility = "visible";

587 

588       popList.style.top =  Pos.top + Pos.height + "px";

589       popList.style.left = Pos.left + "px";

590       popList.style.width = Pos.width + "px";

591   },

592   createIframe : function(){  //ie6创建iframe遮罩

593        var myIframe =  document.createElement('iframe');

594          myIframe.id = 'myIframe';

595          myIframe.style.position = 'absolute';

596          myIframe.style.zIndex = '-1';

597          myIframe.style.left = '-1px';

598          myIframe.style.top = 0;

599          myIframe.style.border = 0;

600          myIframe.style.filter = 'alpha(opacity= 0 )';

601          myIframe.style.width = this.popCity.offsetWidth + 'px';

602          myIframe.style.height = this.popCity.offsetHeight + 'px';

603          this.myIframe = myIframe;

604          return myIframe;

605   },

606   createIframe2 : function(){  //ie6创建iframe遮罩

607        var myIframe2 =  document.createElement('iframe');

608          myIframe2.id = 'myIframe2';

609          myIframe2.style.position = 'absolute';

610          myIframe2.style.zIndex = '-1';

611          myIframe2.style.left = '-1px';

612          myIframe2.style.top = 0;

613          myIframe2.style.border = 0;

614          myIframe2.style.filter = 'alpha(opacity= 0 )';

615          myIframe2.style.width = this.popList.offsetWidth + 'px';

616          myIframe2.style.height = this.popList.offsetHeight + 'px';

617          return myIframe2;

618   },

619   createUL : function(){

620       var value = this.input.value,

621           popList = this.popList;

622       if(value !==""){

623         var ul = document.createElement('ul'),

624             searchResult = [],

625             reg = new RegExp("^" + value + "|\\|" + value, 'gi'),

626             make,str;

627         searchResult.push("<ul>");

628         for(var i in cityData){

629            if(reg.test(cityData[i])){ //含有字符串

630               make = cityData[i].split("|");  //分割成数组

631               str = "<li>"+make[0]+"</li>";

632               searchResult.push(str);

633            }

634         }

635         searchResult.push("</ul>");

636 

637         if(searchResult.length>2){

638           popList.innerHTML = searchResult.join("");

639           if(_CalF.ie6()){

640             popList.appendChild(this.createIframe2());

641             this.liHover();

642           };

643           this.liClick();

644           popList.style.visibility = "visible";

645         }

646 

647       }else{

648           popList.style.visibility = "hidden";

649       }

650   },

651   outClick:function(){  //鼠标在对象区域外点击隐藏

652      var that = this;

653      _CalF.addHandler(document, 'click',function(event){

654          var event = event || window.event,

655              target = event.target || event.srcElement;

656          if(target == that.input || target==that.popCity || target==that.popList) return;

657          that.popCity.style.visibility = "hidden";

658          that.popList.style.visibility = "hidden";

659      });

660   }

661 

662 

663 };

664 

665 iCity.getData();

666 var input1 = iCity.inputSelector("city1");

667 var input2 = iCity.inputSelector("city2");

668 </script>

669 </body>

670 </html>

 

你可能感兴趣的:(js)