页面三个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. Two Sum [easy] (Python)

    由于题目说了有且只有唯一解,可以考虑两遍扫描求解:第一遍扫描原数组,将所有的数重新存放到一个dict中,该dict以原数组中的值为键,原数组中的下标为值:第二遍扫描原数组,对于每个数nums[i]查看 ...

  2. 设计模式学习总结(六)原型模式(Prototype)

    原型模式即通过对象拷贝的方式来实现对同类对象的生成的一种设计模式! 浅复制:对于值类型,则直接复制该值,对于引用类型的字段则是对其引用的复制,如果原引用与现引用只要有一个的值发生变化,则都会造成两者值 ...

  3. (转)Linux系统sersync数据实时同步

    Linux系统sersync数据实时同步 原文:http://blog.csdn.net/mingongge/article/details/52985259 前面介绍了以守护进程的方式传输或同步数据 ...

  4. Ace教你一步一步做Android新闻客户端(四) 优化Bitmap大法

    我计划着把需要用到的知识分解开来写,趁着我们要开发这款客户端的机会把安卓所有移动客户端开发中的技术贯穿其中,也是我自己成长的过程.By Ace in 20160121 我们开发一款新闻客户端程序,它的 ...

  5. Java面试题搜集

    这里是一些Java面试题,从"程序员小灰"公众号转载过来,备用. 项目介绍 明确项目是做什么的 明确项目的价值.(为什么做这个项目,它解决了用户什么痛点,它带来什么价值?) 明确项 ...

  6. c#输入方法名来调用方法(反射)

    using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy ...

  7. MongoDB的MapReduce用法及php示例代码

    MongoDB虽然不像我们常用的mysql,sqlserver,oracle等关系型数据库有group by函数那样方便分组,但是MongoDB要实现分组也有3个办法: * Mongodb三种分组方式 ...

  8. 九度oj题目1165:字符串匹配

    题目1165:字符串匹配 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3078 解决:1079 题目描述: 读入数据string[ ],然后读入一个短字符串.要求查找string[ ]中 ...

  9. jQuery对象和DOM对象使用说明,需要的朋友可以参考下。

    jQuery对象和DOM对象使用说明,需要的朋友可以参考下.1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解jQuery ...

  10. SpringBoot | 第二十九章:Dubbo的集成和使用

    前言 今年年初时,阿里巴巴开源的高性能服务框架dubbo又开始了新一轮的更新,还加入了Apache孵化器.原先项目使用了spring cloud之后,已经比较少用dubbo.目前又抽调回原来的行业应用 ...