项目中的五级地址联动效果(js)
我刚开始是的时候是是写了一个sql语句,但是写了5个函数,来联动地址的。后来请教了前端的师傅,用js来写了一个地址联动的。
我使用的是easyui的框架!
地址联动部分html代码!
<tr>
<td colspan="4">
<div id="address_box1">
省 :<input class="easyui-combobox" name="codeName" id="codeName" style="width:120px;"/>
市 :<input class="easyui-combobox" name="code_nameShi" id="code_nameShi" style="width:120px;" />
区/县: <input class="easyui-combobox" name="code_nameQu" id="code_nameQu" style="width:120px;"/>
街道: <input class="easyui-combobox" name="code_namebut" id="code_namebut" style="width:150px;" />
社区: <input class="easyui-combobox" name="code_nameSheQu" id="code_nameSheQu" style="width:150px;"/>
<input name="addressId" id="addressId" style="display:none" ></div>
</td>
</tr>
因为我的是在添加了一条数据之后,要刷新整个页面。
var AddressBox = function () {
var self = this;
this.selectboxs = ["codeName", "code_nameShi", "code_nameQu", "code_namebut", "code_nameSheQu"];
var len = this.selectboxs.length, i, obj;
for (i = 0; i < len; ++i) {
obj = $("#" + this.selectboxs[i]);
if(i<len-1){// 这里的长度-1,是因为我要得到的最后的数据,是最后地址的id值,前面的地址我需要得到是他们的code_value。
obj.combobox({
valueField:'code_value',
textField:'name',
onChange: (function (index) {
return function (newValue, oldValue) {
if(newValue && newValue.length > 0){
self.Clear(index + 1);
self.Load(index + 1, newValue);
}
};
})(i)
});
}else{
obj.combobox({
valueField:'id',
textField:'name'
}); } }
}; AddressBox.prototype = {
Clear: function (index) {
var i, ob;
index = index || 0;
for (i = index; i < this.selectboxs.length; ++i) {
ob = $("#" + this.selectboxs[i]);
ob.combobox("clear"); // 清除数据
ob.combobox("loadData", []);// 加载数据
}
},
Load: function (index, pid, initvalue) {
index = index || 0 ;
pid = pid || "156";
var v = parseInt(initvalue);
if (pid) {
var self = this;
$.ajax({
url: '/yxt-admin/admin/address/' + pid + '/name',// 查询地址的sql语句
success: function (back) {
if(back.data) {
var rows = back.data.rows, ob = $("#" + self.selectboxs[index]);
ob.combobox("loadData", rows);
if(initvalue !== undefined){
ob.combobox("setValue", v);
}
}
self = null;
pid = null;
v = null;
}
});
}
},
ReSet:function(){
this.Clear();
// obj = [];
if(window.parent && window.parent.__hospital_adressdata){
var adressdata = window.parent.__hospital_adressdata ,len = this.selectboxs.length, i;
for (i = 0; i < len; ++i) {
this.Load(i, adressdata[i-1], adressdata[i]);
}
}else{
this.Load();
}
}
}; var addressbox = new AddressBox();
调用函数只需要这一步:
// 地址选择
addressbox.ReSet();
当然我添加了数据之后,我还想在同一个地址添加一条数据,那么就要保证你前一条数据的地址,不被清除。但是我的刷新了整个页面的,所以是肯定被清除了的,所以就需要设置 window.parent。
在添加数据的那里添加
if(window.parent){
if(window.parent.__hospital_adressdata){
window.parent.__hospital_adressdata.splice(0,window.parent.__hospital_adressdata.length);
}else{
window.parent.__hospital_adressdata = [];
}
var selectboxs = ["codeName", "code_nameShi", "code_nameQu", "code_namebut", "code_nameSheQu"],
len=selectboxs.length,i;
for(i = 0 ; i < len ; ++i){
window.parent.__hospital_adressdata.push($('#'+ selectboxs[i]).combobox('getValue'));
}
}
项目中的五级地址联动效果(js)的更多相关文章
- 如何在我们项目中利用开源的图表(js chart)
最近觉得应该把自己在技术上的一些心得记录在博客里面跟大家分享,一起讨论,一起成长! 这篇随笔主要为介绍chart在项目中的运用,因为在我们看到一些开源的chart时候,是使 ...
- vue项目中引入animate.css和wow.js
本文转自:https://blog.csdn.net/liyunkun888/article/details/85003152 https://www.zhuimengzhu.com/content/ ...
- vue项目中 如何让外部引入的js模块 的this值 指向vue实例
当前是vue项目,想在tool.js(工具模块)中封装一个跳转页面的方法, goToUrl(name,query){ if(query){ if(query.addressCode){ vueObje ...
- SpringBoot项目中使用Bootstrap 的CSS、JS资源
首先 需要在 application.properties 文件中添加这句 spring.mvc.static-path-pattern=/** 不然是使用不了的 还有一种办法就是 使用bootstr ...
- 我项目中使用userData的实例 UserData.js
关于userData的介绍,请参见http://hi.baidu.com/kaisep/blog/item/1da9a3312d2da5a15edf0e87.htmlhttp://hi.baidu.c ...
- web项目中url-pattern改成'/'后,js、css、图片等静态资源(404)无法访问问题解决办法
感谢http://blog.csdn.net/this_super/article/details/7884383的文章 1.增加静态资源url映射 如Tomcat, Jetty, JBoss, Gl ...
- web项目中url-pattern改成'/'后,js、css、图片等静态资源(404)无法访问问题解决办法
感谢http://blog.csdn.net/this_super/article/details/7884383的文章 1.增加静态资源url映射 如Tomcat, Jetty, JBoss, Gl ...
- Vue项目中导入excel文件读取成js数组
1. 安装组件 cnpm install xlsx --save 2. 代码 <template> <span> <input class="input-fil ...
- Vue如何使用vue-area-linkage实现地址三级联动效果
很多时候我们需要使用地址三级联动,即省市区三级联动.网上有很多插件,在此介绍Vue的一款地区联动插件:vue-area-linkage,下面介绍如何使用这个插件实现地址联动效果: 1. ...
随机推荐
- Asp.net 与 jsp 交互 (打开或跳转页面)
//// 打开固定大小窗体 Response.Write("<script>window.open('Tree1_edit.aspx','child','width=300,he ...
- Humble Numbers
Humble Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9988 Accepted: 4665 Descri ...
- Unity-Animator深入系列---fullPathHash和shortNameHash
回到 Animator深入系列总目录 Unity5对状态哈希做了改进,拆分成了fullPathHash和shortNameHash,那么就来看看他们有什么区别 测试结果: fullPathHash支持 ...
- Scrapy集成selenium+PhantomJS+代理IP 解析js动态内容
转载于:http://blog.aizhet.com/web/16523.html
- linux脚本随笔-01
#### 获取配置文件配置路径,javapath为配置项,var为具体的配置值 eval $(awk -F "javapath=" '{if($2=="") { ...
- C#中汉诺塔问题的递归解法
百度测试部2015年10月份的面试题之——汉诺塔. 汉诺塔就是将一摞盘子从一个塔转移到另一个塔的游戏,中间有一个用来过度盘子的辅助塔. 百度百科在此. 游戏试玩在此. 用递归的思想解决汉诺塔问题就是分 ...
- 2016年10月29日 星期六 --出埃及记 Exodus 19:14
2016年10月29日 星期六 --出埃及记 Exodus 19:14 After Moses had gone down the mountain to the people, he consecr ...
- 3094 寻找sb4
3094 寻找sb4 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description sb有一天和sml吵架了,她 ...
- Java获取某月天数
Java获取某月天数 Calendar cal = new GregorianCalendar(); //或者用Calendar cal = Calendar.getIns ...
- JAVA查找--[二分查找]
package com.array; public class BinaryFind { /* * 项目名称:二分查找 ; * 项目要求:用JAVA对数组进行查找,并运用快速查找算法; * 作者:Se ...