页面三个txt加载联动省市县的代码,类似淘宝的收货地址的布局
页面三个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加载联动省市县的代码,类似淘宝的收货地址的布局的更多相关文章
- vue mint-ui 实现省市区街道4级联动(仿淘宝京东收货地址4级联动)
demo及源码地址 https://github.com/artiely/citypicker 先去下载一个“省份.城市.区县.乡镇” 四级联动数据,然后 引入 import { Picker } f ...
- 三种动态加载js的jquery实例代码另附去除js方法
!-- 这里为你提供了三种动态加载js的jquery实例代码哦,由于jquery是为用户提供方便的,所以利用jquery动态加载文件只要一句话$.getscript("test.js&quo ...
- 再谈DOMContentLoaded与渲染阻塞—分析html页面事件与资源加载
浏览器的多线程中,有的线程负责加载资源,有的线程负责执行脚本,有的线程负责渲染界面,有的线程负责轮询.监听用户事件. 这些线程,根据浏览器自身特点以及web标准等等,有的会被浏览器特意的阻塞.两个很明 ...
- 使用jquery结合ajax做下拉刷新页面,上拉加载页面,俗称分页
jquery结合iscroll.js做下拉刷新页面,上拉加载页面 先上代码,里面都有注释这就不一一说明了 <!DOCTYPE html> <html lang="en&qu ...
- 前端 | 页面触底自动加载 Vue 组件
不管是 web 端还是移动端,信息流都是现在很流行的信息展示方式.信息流经常搭配自动加载一起使用以获得更好的使用体验. 最近在使用 Vue 开发过程中也遇到了首页信息流自动加载的需求.大致了解了一下几 ...
- mybatis(三)懒加载
懒加载的好处: 所谓懒加载(lazy)就是延时加载,延迟加载.什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载.至于为什么要用懒加载呢,就是当我们要访问的数据量过大时,明显用缓存不太合适,因为 ...
- java基础-jdbc——三种方式加载驱动建立连接
String url = "jdbc:mysql://localhost:3306/student?Unicode=true&characterEncoding=utf-8" ...
- 页面滚动动态加载数据,页面下拉自动加载内容 jquery
<!DOCTYPE=html> <html> <head> < script src="js/jquery.js" type=" ...
- 测试页面,页面里边一次加载50张不同的图片,每张5M以上,查看浏览器的内存使用情况
测试页面 1.需要你写个测试页面,页面里边一次加载50张不同的图片,每张5M,查看浏览器的内存使用情况 2.可以10张 递增的方式测试 3.图片需要缩放,比如所有图片缩放成600*800的比例 目的 ...
随机推荐
- Gradle发布项目到 maven(1)
常见的 Maven 仓库 JCenter.MavenCenter.JitPack epositories { google() // google 仓库 jcenter() // JCenter 仓库 ...
- android 学习资源网址
脚本之家: http://www.jb51.net/list/list_233_2.htm csdn: http://blog.csdn.net/xubo578/article/details/571 ...
- pat02-线性结构3. 求前缀表达式的值(25)
02-线性结构3. 求前缀表达式的值(25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 算术表达式有前缀表示法.中缀表示法和后缀表示法 ...
- Red–black tree ---reference wiki
source address:http://en.wikipedia.org/wiki/Red%E2%80%93black_tree A red–black tree is a type of sel ...
- C# Uploadify 文件上传组件的使用
一.页面的构建 1.要引用的JS和CSS <link href="../css/jquery-ui.css" rel="stylesheet" type= ...
- js经验点滴js apply/call/caller/callee/bind使用方法与区别分析
一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). Js代码 call([thisObj[,arg1[, arg2[, ...
- 深入理解JavaScript系列(17):面向对象编程之概论
介绍 在本篇文章,我们考虑在ECMAScript中的面向对象编程的各个方面(虽然以前在许多文章中已经讨论过这个话题).我们将更多地从理论方面看这些问题. 特别是,我们会考虑对象的创建算法,对象(包括基 ...
- [转]ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器
本文转自:http://www.cnblogs.com/dotNETCoreSG/p/aspnetcore-4_4_3-filters.html 原文:Filters 作者:Steve Smith 翻 ...
- 错误:38-Corel VideoStudio文件已损坏或被修改。请重新安装原始来源解决方法。
打开 Corel VideoStudio Pro X5(绘声绘影)弹出一下警告. 错误:38-Corel VideoStudio文件已损坏或被修改.请重新安装原始来源解决方法. [第一方法]:控制面板 ...
- Json/Xml简介和处理模型
JSON json简介 JSON是一种基于文本的数据交换格式,源自JavaScript,用于Web服务和其他连接的应用程序.以下部分介绍了JSON语法,JSON使用概述以及生成和解析JSON的最常用方 ...