页面三个txt加载联动省市县的代码,假如有一个树形的JSON,分别显示的省市县
这时候三个TXT怎么做联动效果呢,这里用framework7为例
HTML:

<div class="list-block" style=" margin-top: 43px;">
<ul>
<li>
<!-- Additional "smart-select" class -->
<a href="#" class="item-link smart-select province-sel">
<!-- select -->
<select name="user_province"></select>
<div class="item-content">
<div class="item-inner">
<!-- Select label -->
<div class="item-title">省份</div>
<!-- Selected value, not required -->
<div class="item-after txt_user_province">请选择</div>
</div>
</div>
</a>
</li>
<li>
<!-- Additional "smart-select" class -->
<a href="#" class="item-link smart-select city-sel">
<!-- select -->
<select name="user_city"></select>
<div class="item-content">
<div class="item-inner">
<!-- Select label -->
<div class="item-title">城市</div>
<!-- Selected value, not required -->
<div class="item-after txt_user_city">请选择</div>
</div>
</div>
</a>
</li>
<li>
<!-- Additional "smart-select" class -->
<a href="#" class="item-link smart-select area-sel">
<!-- select -->
<select name="user_area">
</select>
<div class="item-content">
<div class="item-inner">
<!-- Select label -->
<div class="item-title">区县</div>
<!-- Selected value, not required -->
<div class="item-after txt_user_area">请选择</div>
</div>
</div>
</a>
</li>
<li>
<div class="item-content">
<div class="item-inner">
<textarea id="txtarea_userAddress" placeholder="请输入地址详细信息"></textarea>
</div>
</div>
</li>
</ul>
</div>

页面开始先加载第一个省和第一个省的第一个市和第一个市的第一个县
这里可以使用递归的方法有兴趣的同学可以花时间写一下

js:

    //一次加载所有省市区信息(初始化)
function GetUserAddressByITInfo() {
myApp.showIndicator();
$.post("/Default/GetUserAddressByITInfo", {}, function (data) {
myApp.hideIndicator();
if (data) {
var pOptHmtl = '';
var cOptHmtl = '';
var aOptHmtl = '';
//获取的数据放入全局变量充当缓存
userAddressByItArray = data.userAddrList;
//循环省级节点
$.each(data.userAddrList, function (pIndex, pValue) {
pOptHmtl += '<option value="' + pValue.ProvinceName + '">' + pValue.ProvinceName + '</option>';
//第一个节点获取一下
if (pIndex == 0) {
//根据一级节点循环绑定下面的二级市节点
$('.txt_user_province').text(pValue.ProvinceName);
$.each(pValue.CityNameList, function (cIndex, cValue) {
cOptHmtl += '<option value="' + cValue.CityName + '">' + cValue.CityName + '</option>';
if (cIndex == 0) {
//第一个市节点获取一下,根据这个循环绑定下面的区县节点
$('.txt_user_city').text(cValue.CityName);
$.each(cValue.AreaNameList, function (aIndex, aValue) {
aOptHmtl += '<option value="' + aValue.AreaName + '">' + aValue.AreaName + '</option>';
if (aIndex == 0) {
$('.txt_user_area').text(aValue.AreaName);
}
});
$('select[name="user_area"]').html(aOptHmtl);
}
});
$('select[name="user_city"]').html(cOptHmtl);
}
});
$('select[name="user_province"]').html(pOptHmtl);
}
});
} //然后省点击后触发select标签的change事件找到下面的市
//根据省份选择市
function GetCityListByProvince() {
var pOptHmtl = '';
var cOptHmtl = '';
var aOptHmtl = '';
var selProvince = $('select[name="user_province"] option:selected').val();
if (userAddressByItArray) {
//当select省级标签发生改变的时候,从一开始加载页面的数组去读取和新选中的项一样的树节点
$.each(userAddressByItArray, function (pIndex, pValue) {
if (selProvince == pValue.ProvinceName) {
$('.txt_user_province').text(pValue.ProvinceName);
//然后根据这个树节点从新加载二级市的节点
$.each(pValue.CityNameList, function (cIndex, cValue) {
cOptHmtl += '<option value="' + cValue.CityName + '">' + cValue.CityName + '</option>';
if (cIndex == 0) {
//同样的绑定第一个市的区县节点
$('.txt_user_city').text(cValue.CityName);
$.each(cValue.AreaNameList, function (aIndex, aValue) {
aOptHmtl += '<option value="' + aValue.AreaName + '">' + aValue.AreaName + '</option>';
if (aIndex == 0) {
$('.txt_user_area').text(aValue.AreaName);
}
});
$('select[name="user_area"]').html(aOptHmtl);
}
});
$('select[name="user_city"]').html(cOptHmtl);
}
});
} else {
$.post("/Default/GetUserAddressByITInfo", {}, function (data) {
if (data) {
$.each(data.userAddrList, function (pIndex, pValue) {
if (selProvince == pValue.ProvinceName) {
$('.txt_user_province').text(pValue.ProvinceName);
$.each(pValue.CityNameList, function (cIndex, cValue) {
cOptHmtl += '<option value="' + cValue.CityName + '">' + cValue.CityName + '</option>';
if (cIndex == 0) {
$('.txt_user_city').text(cValue.CityName);
$.each(cValue.AreaNameList, function (aIndex, aValue) {
aOptHmtl += '<option value="' + aValue.AreaName + '">' + aValue.AreaName + '</option>';
if (aIndex == 0) {
$('.txt_user_area').text(aValue.AreaName);
}
});
$('select[name="user_area"]').html(aOptHmtl);
}
});
$('select[name="user_city"]').html(cOptHmtl);
}
});
}
});
}
} //市点击后触发select的change事件找到下面的区县
//根据省市选择区
function GetAreaListByCity() {
var pOptHmtl = '';
var cOptHmtl = '';
var aOptHmtl = '';
var selProvince = $('select[name="user_province"] option:selected').val();
var selCity = $('select[name="user_city"] option:selected').val();
if (userAddressByItArray) {
//当select市级标签发生改变的时候,从一开始加载页面的数组去读取和新选中的项一样的树节点,然后找到省和市一样的那个节点
$.each(userAddressByItArray, function (pIndex, pValue) {
//先确定省级
if (selProvince == pValue.ProvinceName) {
$('.txt_user_province').text(pValue.ProvinceName);
//然后根据这个树节点从新加载二级市的节点
$.each(pValue.CityNameList, function (cIndex, cValue) {
cOptHmtl += '<option value="' + cValue.CityName + '">' + cValue.CityName + '</option>';
//在确定省级下面的市级
if (selCity == cValue.CityName) {
//同样的绑定第一个市的区县节点
$('.txt_user_city').text(cValue.CityName);
$.each(cValue.AreaNameList, function (aIndex, aValue) {
//再根据这个当前的市节点重新加载三级区县节点
aOptHmtl += '<option value="' + aValue.AreaName + '">' + aValue.AreaName + '</option>';
if (aIndex == 0) {
$('.txt_user_area').text(aValue.AreaName);
}
});
$('select[name="user_area"]').html(aOptHmtl);
}
});
$('select[name="user_city"]').html(cOptHmtl);
}
});
} else {
$.post("/Default/GetUserAddressByITInfo", {}, function (data) {
if (data) {
$.each(data.userAddrList, function (pIndex, pValue) {
//先确定省级
if (selProvince == pValue.ProvinceName) {
$('.txt_user_province').text(pValue.ProvinceName);
//然后根据这个树节点从新加载二级市的节点
$.each(pValue.CityNameList, function (cIndex, cValue) {
cOptHmtl += '<option value="' + cValue.CityName + '">' + cValue.CityName + '</option>';
//在确定省级下面的市级
if (selCity == cValue.CityName) {
//同样的绑定第一个市的区县节点
$('.txt_user_city').text(cValue.CityName);
$.each(cValue.AreaNameList, function (aIndex, aValue) {
//再根据这个当前的市节点重新加载三级区县节点
aOptHmtl += '<option value="' + aValue.AreaName + '">' + aValue.AreaName + '</option>';
if (aIndex == 0) {
$('.txt_user_area').text(aValue.AreaName);
}
});
$('select[name="user_area"]').html(aOptHmtl);
}
});
$('select[name="user_city"]').html(cOptHmtl);
}
});
}
});
}
}

页面三个txt加载联动省市县的代码,类似淘宝的收货地址的布局的更多相关文章

  1. vue mint-ui 实现省市区街道4级联动(仿淘宝京东收货地址4级联动)

    demo及源码地址 https://github.com/artiely/citypicker 先去下载一个“省份.城市.区县.乡镇” 四级联动数据,然后 引入 import { Picker } f ...

  2. 三种动态加载js的jquery实例代码另附去除js方法

    !-- 这里为你提供了三种动态加载js的jquery实例代码哦,由于jquery是为用户提供方便的,所以利用jquery动态加载文件只要一句话$.getscript("test.js&quo ...

  3. 再谈DOMContentLoaded与渲染阻塞—分析html页面事件与资源加载

    浏览器的多线程中,有的线程负责加载资源,有的线程负责执行脚本,有的线程负责渲染界面,有的线程负责轮询.监听用户事件. 这些线程,根据浏览器自身特点以及web标准等等,有的会被浏览器特意的阻塞.两个很明 ...

  4. 使用jquery结合ajax做下拉刷新页面,上拉加载页面,俗称分页

    jquery结合iscroll.js做下拉刷新页面,上拉加载页面 先上代码,里面都有注释这就不一一说明了 <!DOCTYPE html> <html lang="en&qu ...

  5. 前端 | 页面触底自动加载 Vue 组件

    不管是 web 端还是移动端,信息流都是现在很流行的信息展示方式.信息流经常搭配自动加载一起使用以获得更好的使用体验. 最近在使用 Vue 开发过程中也遇到了首页信息流自动加载的需求.大致了解了一下几 ...

  6. mybatis(三)懒加载

    懒加载的好处: 所谓懒加载(lazy)就是延时加载,延迟加载.什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载.至于为什么要用懒加载呢,就是当我们要访问的数据量过大时,明显用缓存不太合适,因为 ...

  7. java基础-jdbc——三种方式加载驱动建立连接

    String url = "jdbc:mysql://localhost:3306/student?Unicode=true&characterEncoding=utf-8" ...

  8. 页面滚动动态加载数据,页面下拉自动加载内容 jquery

    <!DOCTYPE=html> <html> <head> < script src="js/jquery.js" type=" ...

  9. 测试页面,页面里边一次加载50张不同的图片,每张5M以上,查看浏览器的内存使用情况

    测试页面 1.需要你写个测试页面,页面里边一次加载50张不同的图片,每张5M,查看浏览器的内存使用情况 2.可以10张 递增的方式测试 3.图片需要缩放,比如所有图片缩放成600*800的比例 目的 ...

随机推荐

  1. PIE SDK缨帽变换

    1.算法功能简介 缨帽变换是根据多光谱遥感中土壤.植被等信息在多维光谱空间中信息分布结构对图像做的经验性线性正交变换. PIE 支持对 Landsat MSS. Landsat 5 TM.Landsa ...

  2. java将文本写入本地硬盘

    注意:首先要在E盘创建qaz.txt文本文件.然后执行代码写入. public static void main(String[] args) { SecurityCodeUtils scu = ne ...

  3. AWS and OpenStack

    AWS OpenStack EC2 Nova EBS Cinder EFS Manila S3 Swift Storage Gateway 本地上云 ClondFront 内容发布服务 VPC Neu ...

  4. Spark 1.6.2 + Beam 2.0.0读取Mongodb数据进行相应逻辑处理

    不多说,直接上干货! http://blog.csdn.net/jianglushou9763/article/details/73332805 如果需要 APACHE BEAM2.0.0版本如何支持 ...

  5. merchantInfo.properties配置文件

    p1_MerId=10001126856 keyValue=69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl callback= ...

  6. cmd激活win10

    自己动手,KMS激活win10 2016 长期服务版.步骤如下:命令提示符(管理员),依次输入以下3条命令 slmgr /ipk DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJslmgr ...

  7. C++ Memory System Part2: 自定义new和delete

    在第一部分中,我们介绍了new / delete的具体用法和背后的实现细节,这次我们将构建我们自己的小型工具集,可以使用我们自定义的allocator类来创建任意类型的实例(或者实例数组),我们需要做 ...

  8. Java网站开发的一些问题以及解决(cookie消失,上传头像,js等)

    1.首先是cookie的问题,很多人都是遇到了将数据存储到cookie中并且add到response之中,但是还有返回其他页面或者刷新页面cookie消失的情况,除了设置cookie的存活时间外, 还 ...

  9. log4j的AppenderLayout格式符

    %p:输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL. %d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,如:%d{yyyy/MM/dd ...

  10. Linux抓包工具:tcpdump

    tcpdump 是一个命令行实用工具,允许你抓取和分析经过系统的流量数据包.它通常被用作于网络故障分析工具以及安全工具. tcpdump 是一款强大的工具,支持多种选项和过滤规则,适用场景十分广泛.由 ...