我刚开始是的时候是是写了一个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)的更多相关文章

  1. 如何在我们项目中利用开源的图表(js chart)

            最近觉得应该把自己在技术上的一些心得记录在博客里面跟大家分享,一起讨论,一起成长!       这篇随笔主要为介绍chart在项目中的运用,因为在我们看到一些开源的chart时候,是使 ...

  2. vue项目中引入animate.css和wow.js

    本文转自:https://blog.csdn.net/liyunkun888/article/details/85003152 https://www.zhuimengzhu.com/content/ ...

  3. vue项目中 如何让外部引入的js模块 的this值 指向vue实例

    当前是vue项目,想在tool.js(工具模块)中封装一个跳转页面的方法, goToUrl(name,query){ if(query){ if(query.addressCode){ vueObje ...

  4. SpringBoot项目中使用Bootstrap 的CSS、JS资源

    首先 需要在 application.properties 文件中添加这句 spring.mvc.static-path-pattern=/** 不然是使用不了的 还有一种办法就是 使用bootstr ...

  5. 我项目中使用userData的实例 UserData.js

    关于userData的介绍,请参见http://hi.baidu.com/kaisep/blog/item/1da9a3312d2da5a15edf0e87.htmlhttp://hi.baidu.c ...

  6. web项目中url-pattern改成'/'后,js、css、图片等静态资源(404)无法访问问题解决办法

    感谢http://blog.csdn.net/this_super/article/details/7884383的文章 1.增加静态资源url映射 如Tomcat, Jetty, JBoss, Gl ...

  7. web项目中url-pattern改成'/'后,js、css、图片等静态资源(404)无法访问问题解决办法

    感谢http://blog.csdn.net/this_super/article/details/7884383的文章 1.增加静态资源url映射 如Tomcat, Jetty, JBoss, Gl ...

  8. Vue项目中导入excel文件读取成js数组

    1. 安装组件 cnpm install xlsx --save 2. 代码 <template> <span> <input class="input-fil ...

  9. Vue如何使用vue-area-linkage实现地址三级联动效果

    很多时候我们需要使用地址三级联动,即省市区三级联动.网上有很多插件,在此介绍Vue的一款地区联动插件:vue-area-linkage,下面介绍如何使用这个插件实现地址联动效果:         1. ...

随机推荐

  1. Less (一种动态样式语言)

    Less (一种动态样式语言). LESS是一种由Alexis Sellier设计的动态层叠样式表语言,受Sass所影响,同时也影响了 Sass的新语法:SCSS. LESS是开源的,其第一个版本由R ...

  2. infragistcs 又

    1:UltraGrid风格设置函数 public static void ColorGrid(ref Infragistics.Win.UltraWinGrid.UltraGrid dgd) { // ...

  3. ubuntu16.04 搭建 Mysql服务器

    ubuntu16.04 安装 mysql5.7 ,并配置远程访问 安装mysql及其可选组件 apt-get install mysql-serverapt-get install mysql-cli ...

  4. 使用mybatis完成通用dao和通用service

    使用mybatis完成通用dao和通用service 概述: 使用通用dao和通用service可以减少代码的开发.可以将常用的增删改查放到通用dao中.对不同的or框架,基本上都有自己的实现如Spr ...

  5. int转多进制

    char buf[4]; int len=100; _itoa(len,buf_len,16);//16代表十六进制,可用其他进制

  6. CodeForces 131A cAPS lOCK

    cAPS lOCK Time Limit:500MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit St ...

  7. SQL查看表锁定,死锁解锁

    select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran ...

  8. The property 'RowId' is part of the object's key information and cannot be modified.

    2016-10-20 10:19:46,667 [12] ERROR ClientApp.FormDownload - ErrorSystem.InvalidOperationException: T ...

  9. web后门top

    看到了一个博客  觉得关键点很有用 1)出现频率最高的DDoS后门文件名 abc.php, xl.php, Xml.php, dedetag.class.php, counti.php, plase. ...

  10. MyBatis 动态SQL查询,多条件,分页

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-/ ...