发一个ext combo三级(省市区)源码,望指点

flash8627 2010-06-30 10:09:20
预览效果


页面

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>会员注册</title>

<link href="style/extjs.css" rel="stylesheet" type="text/css" />

<script type="text/javascript" src="../libs/ext-3.2.1/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../libs/ext-3.2.1/ext-all.js"></script>
<script type="text/javascript"
src="../libs/ext-3.2.1/source/locale/ext-lang-zh_CN.js"></script>

<!-- <script type="text/javascript" src="script/extjs-area-combobox.js"></script> -->
<script type="text/javascript" src="script/area-extjs-auto-complate.js">
</script>
<style type="text/css">
#slideIn ,#cityIn ,#areaIn{width:212px;margin:12px 18px;}
</style>

</head>

<body>
<div id="slideIn">
</div>
<div id="cityIn">
</div>
<div id="areaIn">
</div>
<div id="slideInBtn">
</div>
</body>



Ext.BLANK_IMAGE_URL = "/libs/ext-3.2.1/resources/images/default/s.gif";
Ext.onReady(function() {

var provinceStore = new Ext.data.JsonStore( {
id : 'province',
remoteSort : false,
start : 0,
limit : 34,
totalProperty : "totalProperty",// 总记录数
root : "items",// 所有的数据(json对象数组)要节点
fields : [ "id", "provinceID", "name" ],
proxy : new Ext.data.HttpProxy({
url : 'areaComplate.action'
})
});
provinceStore.load();

var cityStore = new Ext.data.JsonStore( {
root : 'items',
id : 'city',
remoteSort : false,
fields : [ "id", "name", "cityID", "fatherID" ],
proxy : new Ext.data.HttpProxy( {
url : 'getCity.action'
})
});

var areaStore = new Ext.data.JsonStore( {
root : 'items',
id : 'area',
remoteSort : false,
fields : [ "id", "name", "areaID", "fatherID" ],
proxy : new Ext.data.HttpProxy( {
url : 'getAred.action'
})
});

var provinceCombo = new Ext.form.ComboBox( {
renderTo : "slideIn",
xtype : "combo",
fieldLabel : "   省",
store : provinceStore,
pageSize : 34,// 页面大小
width : 280,
listWidth : 280,
name : "province",
hiddenName : 'province',
valueField : "id",
displayField : "name",
triggerAction : 'all',

mode : 'remote'
});

provinceCombo.on('select', function(combo, record, number) {
cityCombo.clearValue();
areaCombo.clearValue();
areaStore.removeAll();
cityStore.baseParams = {
fatherID : record.get("name")
};
alert(record.get("name"));
cityStore.load();
});

provinceCombo.on('Blur', function() {
if (provinceCombo.getRawValue() == '') {
provinceCombo.clearValue();
cityCombo.clearValue();
areaCombo.clearValue();
cityStore.removeAll();
areaStore.removeAll();
}
});

var cityCombo = new Ext.form.ComboBox( {
renderTo : "cityIn",
xtype : "combo",
fieldLabel : "   市",
name : "city",
width : 280,
listWidth : 280,
hiddenName : 'city',
store : cityStore,
valueField : "id",
displayField : "name",
triggerAction : 'all',
mode : 'remote'
});
cityCombo.on('select', function(combo, record, number) {
areaCombo.clearValue();
areaStore.baseParams = {
fatherID : record.get("name")
};
areaStore.load();
});
cityCombo.on('Blur', function(combo) {
if (cityCombo.getRawValue() == '') {
cityCombo.clearValue();
areaCombo.clearValue();
areaStore.removeAll();
}
});

var areaCombo = new Ext.form.ComboBox( {
renderTo : "areaIn",
xtype : "combo",
fieldLabel : "   区",
name : "area",
width : 212,
hiddenName : 'area',
store : areaStore,
valueField : "id",
displayField : "name",
triggerAction : 'all',
mode : 'remote'
});

var btn = new Ext.Button( {
text : '取值',
renderTo : Ext.getBody(),
handler : function() {//
if (!provinceCombo.getValue()) {
Ext.Msg.alert("提示", "请选择省");
return;
}
Ext.Msg.alert("值", "省ID值:" + provinceCombo.getValue()
+ " ;\n 显示省值: " + provinceCombo.getRawValue()
+ " ;\n 市ID值: " + cityCombo.getValue() + " ;\n 显示市值: "
+ cityCombo.getRawValue() + " ;\n 区ID值: "
+ areaCombo.getValue() + " ;\n 显示值: "
+ areaCombo.getRawValue());
}
});

})



效果还可以,唯独有一个BUG,就是如果先点击了市的combo再点省,就会无数据,请高手指点
...全文
334 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
给省市初始化数据的时候,直接设上默认值就行了。没必要加那个“请选择”的项目,虽然到处都这样做,其实想想,真没太大的意义,人家想填真实的,自然就选择真实的,不想填真实的,也是随便选一个。况且对于生存在我们可爱伟大首都北京的数量巨大的上网人群来说,这的确是个麻烦。
hoojo 2010-06-30
  • 打赏
  • 举报
回复

这东西就是根据第一个条件查询第二个。然后根据第二个和第一个查询第三个。思想都这样。至于实现方面略有不同。
zoujp_xyz 2010-06-30
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20100622/14/0d74a4bb-dc7e-4feb-a4b4-38bed3627c28.html
zoujp_xyz 2010-06-30
  • 打赏
  • 举报
回复

{
layout: "form",
items: {
xtype: "combo",
fieldLabel: "所在省",
width: 130,
store: new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: ""
}),
reader: new Ext.data.JsonReader({
id: "Key",
root: "data"
},
[{
name: "Key"
},
{
name: "Value"
}]),
baseParams: {
action: "GetProvinces"
},
autoLoad: true
}),
mode: "local",
valueField: "Key",
triggerAction: "all",
readOnly: true,
displayField: "Value",
hiddenName: "ProvinceId",
name: "ProvinceId",
listeners: {
select: function(combo, record, index) {
win.dealStoreWin.get(0).form.findField("CityId").clearValue();
win.dealStoreWin.get(0).form.findField("CityId").getStore().load({
params: {
args: record.id
}
});
}
}
},
columnWidth: .5
}]
},
{
layout: "column",
items: [{
layout: "form",
items: {
xtype: "combo",
fieldLabel: "所在市",
width: 130,
store: new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: ""
}),
reader: new Ext.data.JsonReader({
id: "Key",
root: "data"
},
[{
name: "Key"
},
{
name: "Value"
}]),
baseParams: {
action: "GetCitiesByProvince"
}
}),
mode: "local",
valueField: "Key",
triggerAction: "all",
readOnly: true,
displayField: "Value",
hiddenName: "CityId",
name: "CityId",
listeners: {
select: function(combo, record, index) {
win.dealStoreWin.get(0).form.findField("CountyId").clearValue();
win.dealStoreWin.get(0).form.findField("CountyId").getStore().load({
params: {
args: record.id
}
});
}
}
},
columnWidth: .5
},
{
layout: "form",
items: {
xtype: "combo",
fieldLabel: "所在区",
width: 130,
store: new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: ""
}),
reader: new Ext.data.JsonReader({
id: "Key",
root: "data"
},
[{
name: "Key"
},
{
name: "Value"
}]),
baseParams: {
action: "GetCountyByCity"
}
}),
mode: "local",
valueField: "Key",
triggerAction: "all",
readOnly: true,
displayField: "Value",
hiddenName: "CountyId",
name: "CountyId"
},
columnWidth: .5
}]
}

hoojo 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 flash8627 的回复:]
预览效果


页面

HTML code

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>会员注册</title>

<link href="style/extjs.css" rel="stylesheet"……

唯独有一个BUG,就是如果先点击了市的combo再点省,就会无数据,请高手指点
[/Quote]

初始化数据的时候,只给省数据。其他下拉都没有数据。然后更加省的选择数据去查第二级下拉数据
依次类推
Re: 《 Linux磁盘与文件系统管理命令 》   ---------------------------------------内容提要: 01/16)命令fdisk           :磁盘分区工具02/16)命令partprobe  :更新内核的硬盘分区表信息(即分区即刻生效)03/16)命令 tune2fs     :调整 ext2/ext3/ext4 文件系统参数04/16)命令 parted       :磁盘分区工具(大小通吃)05/16)命令 mkfs          :创建Linux文件系统06/16)命令 dumpe2fs :导出ext2/ext3/ext4文件系统信息07/16)命令 resize2fs   :调整ext2/ext3/ext4文件系统大小08/16)命令 fsck           :检查并修复Linux文件系统09/16)命令 dd             :转换或复制文件10/16)命令 mount       :挂载文件系统11/16)命令 umount     :卸载文件系统12/16)命令 df              :报告文件系统磁盘空间的使用情况13/16)命令 mkswap    :创建交换分区14/16)命令 swapon     :激活交换分区15/16)命令 swapoff     :关闭交换分区16/16)命令 sync           :刷新文件系统缓冲区17/17)附录                   :NFS 网络文件服务器到安装;客户端的挂载 -t nfs;及新分区的权限测试  本人在教学和实战过程中现,即便是有一定运维经验的人,可能已经能够搭建一定复杂度的Linux架构,但是在来来回回的具体操作中,还是体现出CLI(命令界面)功底不够扎实,甚至操作的非常‘拙’、处处露‘怯’。 对一个士兵来说,枪就是他的武器,对于一个程序员来说,各种library(工具库)就是他的武器;而对于Linux运维人员来说,无疑命令行工具CLI(命令界面)就是他们的武器;高手和小白之间的差距往往就体现在对于这些“武器”的掌握和熟练程度上。有时候一个参数就能够解决的事情,小白们可能要写一个复杂的Shell脚本才能搞定,这就是对CLI(命令界面)没有理解参悟透彻导致。 研磨每一个命令就是擦拭手中的作战武器,平时不保养不理解,等到作战的时候,一定不能够将手中的武器挥到最好,所以我们要平心、静气和专注,甘坐冷板凳一段时间,才能练就一身非凡的内功! 本教程从实战出,结合当下流行或最新的Linux(v6/7/8 版本)同时演示,将命令行结合到解决企业实战问题中来,体现出教学注重实战的务实精神,希望从事或未来从事运维的同学,能够认真仔细的学完Linux核心命令的整套课程。 本课程系列将逐步推出,看看我教学的进度和您学习的步伐,孰占鳌头! 注:关于教学环境搭建,可以参考本人其它课程系列,本教学中就不再赘述! 《参透 VMware 桌面级虚拟化》 《在虚拟机中安装模版机(包括应用软件等)》 《SecureCRT 连接 GNS3/Linux 的安全精密工具》 

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧