实现省、市、区三级联动的输入框
来源:互联网 发布:js获取指定日期 编辑:程序博客网 时间:2024/05/01 00:38
先来说说我最终的实现方法吧。
首先,可以从这里
下载获得,json文件很长很长,所以我将其作为JSON文件存储在工程下。
js读取json文件的方法有两种,一种通过Ajax,另一种通过Jquery的$.getJSON方法实现,我选取的是第二种。
然后,js代码如下:
$.getJSON("../js/region.json", "", function(data) { //初始化 var text = ''; var province = data[0].name; var cityList = data[0].city; var regionList = data[0].city[0].area; console.log(regionList); for (var i = 0; i < data.length; i++) { text += '<option value=' + i + '>' + data[i].name + '</option>' } $("#province").html(text); text = "" for (var i = 0; i < cityList.length; i++) { text += '<option value=0-' + i + '>' + cityList[i].name + '</option>' } $("#city").html(text); text = ''; for (var i = 0; i < regionList.length; i++) { text += '<option value=0-0-' + i + '>' + regionList[i] + '</option>' } $("#region").html(text); $("#province").change(function() { var index = $(this).val(); var cityJson = data[index].city; var regionJson = cityJson[0].area console.log(cityJson); text = ''; for (var i = 0; i < cityJson.length; i++) { text += '<option value=' + index + "-" + i + '>' + cityJson[i].name + '</option>' } $("#city").html(text); text = ''; for (var i = 0; i < cityJson.length; i++) { text += '<option value=' + index + "-0-" + i + '>' + regionJson[i] + '</option>' } console.log(text); $("#region").html(text); }); $("#city").change(function() { var tmp = $(this).val(); console.log(tmp); var provinceIdx = tmp.split('-')[0]; var cityIdx = tmp.split('-')[1]; var regionJson = data[provinceIdx].city[cityIdx].area; console.log(regionJson); text = ''; for (var i = 0; i < regionJson.length; i++) { text += '<option value=' + provinceIdx + "-" + cityIdx + "-" + i + '>' + regionJson[i] + '</option>' } console.log(text); $("#region").html(text); }); });
然后就实现啦!
不过,接下来总结一下我踩过的坑。
由于是在本地直接运行页面,直接读取本地的json文件,因此json文件的读取url为“file:///…”开头的,而Chrome禁止跨域访问,所以,无论是Ajax还是$.getJSON都无法成功读取json文件,jquery报错如下:
error:jquery.min.js:1632 XMLHttpRequest cannot load file:///D:/workspace/first/js/region.json. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
因此,解决办法就是在服务器上跑。我的解决办法是用node.js搭建了一个服务器监听端口使得能正常访问。
2. 没思考清除就开始实现:我之前的思路是利用条件语句进行判断后为下拉框动态生成选项,需要手动写需要动态增加的html,但是做到中途发现工作量实在是太大啦!还是直接利用json比较方便。
- 逻辑不清,省变化会同时影响市和区啊啊啊!
阅读全文
0 0
- 实现省、市、区三级联动的输入框
- UIPickerView实现省 市 区三级联动
- thinkphp实现省,市,区三级联动
- 三级联动 省 市 区 三级联动可赋值
- 省 市 区 三级联动
- ajax巧妙实现省、市、县的三级联动
- Ajax实现省,市,县的三级联动
- Jquery+Ajax+XML实现国家、省、市的三级联动
- AjaxPro实现省、市、区三级无刷新联动
- Android中的省,市,区,实现三级联动
- JavaScript 三级联动的实现
- 简单的实现三级联动
- 国家以及省-市-区三级联动的js数组
- 省市区三级联动菜单实现及三级联动下拉列表框默认值的设置
- knockout 省、市、区三级联动
- 利用Ajax来实现下拉框的三级联动
- IE、FireFox、Opera全兼容的JS解析XML文件实现省、市、县(区)三级联动效果
- js三级联动实现省、市、县及获取值
- 趣图:QA 工程师去买床
- 白话动态代理(附demo)
- 2.2硬件系统和软件系统的建模
- 排序
- android 开启Https单向认证
- 实现省、市、区三级联动的输入框
- Leetcode546. Remove Boxes(Hard)
- 十年后,程序员还会有今天的收入吗?
- 1.1引言
- tomcat 全量压缩包/war/jar jenkins自动化发版
- HtmlAgilityPack官方文档(六)【Utilities】
- Ajax
- 吸顶效果只需五行代码
- window下强制杀死某个进程用taskkill /pid 进程号 -t -f命令