ExtJS-----ComboBox(完整事例演示)||有一bug

7 篇文章 0 订阅
3 篇文章 0 订阅

html:

<html>
  <head>
    <title>Combobox三级联动的实例</title>
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=gbk">
  	<link rel="stylesheet" type="text/css" href="ext-all.css">
	  <script type="text/javascript" src="bootstrap.js"></script>
	  <script type="text/javascript" src="ext-lang-zh_CN.js"></script>
    <script type="text/javascript" src="jimmy.js"></script>
    <style>
    	.center{
    		width:800px;
    		height:400px;
    		border:3px solid#FF1493;
    		margin:10px auto;
    		}
    </style>
  </head>
  <body>
  	<div class="center">
    <br /><br /><br />
        <h3>我爱我家乡---安徽安庆</h3>
        <br />
        <p>
        安庆市:<br/>
        位于长江中下游北岸, 皖鄂赣三省交界处,东与安徽省池州市、铜陵市隔江相望,南以长江与江西省九江市相连,西界湖北省黄梅、蕲春、英山三县,<br/>
        北接安徽省六安市、巢湖市。<br/>
        安庆市辖区面积1.54万平方公里,现辖一市七县三区,即桐城市,怀宁、枞阳、潜山、太湖、宿松、望江、岳西七个县和迎江、大观、宜秀区三个区,<br/>
        总人口610万人,其中市区72.7万人。	<br/>
        </p>
        <br /><br /><br />
         <div style="text-align:center;">
            <div id="comboProvince"></div>
            <div id="comboCity"></div>
            <div id="comboCounty"></div>
            <div id="comboTown"></div>
        </div>
    </div>
  </body>
</html>


 

js:

Ext.require(['Ext.form.*', 'Ext.data.*']);
/**
*分三步走:【1,提供数据】
*					 【2,导入到store】
*					 【3,把store托付给comboBox的store】
*/
Ext.onReady(function(){
    var dataCityHebei = [
        ['唐山','唐山'],
        ['秦皇岛','秦皇岛'],
        ['承德','承德'],
        ['张家口','张家口']
    ];
    var dataCityNeimenggu = [
        ['安庆市','安庆市'],
        ['合肥市','合肥市'],
        ['淮北市','淮北市'],
        ['淮南市','淮南市'],
        ['亳州市','亳州市'],
        ['宿州市','宿州市'],
        ['蚌埠市','蚌埠市'],
        ['滁州市','滁州市'],
        ['六安市','六安市'],
        ['铜陵市','铜陵市'],
        ['芜湖市','芜湖市'],
        ['宣城市','宣城市'],
        ['马鞍山市','马鞍山市'],
        ['池州市','池州市'],
        ['黄山市','黄山市'],
        ['芜湖市','芜湖市']
    ];
    // 其中:遵化、迁安为县级市。
    var dataCountyTangshan = [
        ['桐城市','桐城市'],
        ['望江县','望江县'],
        ['枞阳县','枞阳县'],
        ['宿松县','宿松县'],
        ['太湖县','太湖县'],
        ['岳西县','岳西县'],
        ['潜山县','潜山县'],
        ['怀宁县','怀宁县']
    ];
    var dataTownNeimenggu = [
    		['长岭镇','长岭镇'],
    		['sssss','sssss']
    ];
    var dataCountyUnknow = [
        ['可添加','可添加']
    ];
         
                          
         // 省数据源
           var storeProvince = Ext.create('Ext.data.Store', {
                   fields: ['value', 'text'],
                     data:[
                         {value:'河北',text:'河北'},
                         {value:'安徽省',text:'安徽省'},
                     ],
                     autoLoad : true
                });
                
           // 市数据源
            var storeCity = Ext.create('Ext.data.Store', {
                fields: ['value', 'text'],
             data:[],
             autoLoad : true
           });
           
          // 县数据源
           var storeCounty = Ext.create('Ext.data.Store', {
                fields: ['value', 'text'],
             data:[],
             autoLoad : true
           });
           
           //镇级数据
           var storeTown = Ext.create('Ext.data.Store', {
                fields: ['value', 'text'],
             data:[],
             autoLoad : true
           });
           
     var comboProvince =Ext.create('Ext.form.ComboBox', {
            emptyText:"请选择",     
            store : storeProvince,
            queryMode : 'local',
            triggerAction: 'all',
            valueField: 'value',   //value值字段
            displayField: 'text',  //显示文本字段
            renderTo: 'comboProvince',
            listeners: { // 监听选择事件
                select: function() {
                    storeCity.removeAll();
                     if (this.getValue() == '河北') {
                         storeCity.loadData(dataCityHebei,true);
                        } else if (this.getValue() == '安徽省') {
                        storeCity.loadData(dataCityNeimenggu,true);
                    }else if(this.getValue() == 'ssss') {
                        storeCity.loadData(dataCityNeimenggu,true);
                    }
                   }
            }
         });
      var comboCity =Ext.create('Ext.form.ComboBox', {
            emptyText:"请选择",
            store : storeCity,
            mode: 'local',
            triggerAction: 'all',
            valueField: 'value',
            displayField: 'text',
            renderTo: 'comboCity',
            listeners: { 
                select: function() {
                     if (this.getValue() == '安庆市') {
                         storeCounty.loadData(dataCountyTangshan);
                    } else {
                        storeCounty.loadData(dataCountyUnknow);
                        }
                   }
            }
         });
         
          var comboCounty =Ext.create('Ext.form.ComboBox', {
            emptyText:"请选择",
            store : storeCounty,
            mode: 'local',
            triggerAction: 'all',
            valueField: 'value',
            displayField: 'text',
            renderTo: 'comboCounty',
            listeners: { 
                select: function() {
                     if (this.getValue() == '望江县') {
                         storeCounty.loadData(dataCountyTangshan);
                    } else {
                        storeTown.loadData(dataTownNeimenggu,true);
                        }
                   }
            }
         });
         
         var comboTown =Ext.create('Ext.form.ComboBox', {
            emptyText:"请选择",
            store : storeTown,
            mode: 'local',
            triggerAction: 'all',
            valueField: 'value',
            displayField: 'text',
            renderTo: 'comboTown',
            listeners: { 
                select: function() {
                    alert(comboProvince.getValue() + '-' + comboCity.getValue() + '-' + comboCounty.getValue() + '-' + comboTown.getValue());
                   }
            }
         });
      });

有一bug:如安徽省,河北,,我想点出安庆市,,那么我得先点击河北,再点击河北的下一联动,不会出现任何内容,这时候再点击上一级点击安徽省,再点击下一级才会出现选项,,,,想再点击下一级,在市级选项里面重复一样的操作(不需要点击省级哦!)

--------555,有高手能够解决这个bug的请指教,谢谢。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值