Jquery+Ajax+XML实现国家、省、市的三级联动

Jquery+Ajax+XML实现国家、省、市的三级联动


html页面:

<tr><td>所在国家:<select name="sCountry" id="sCountry"></select></td></tr>
<tr><td>所在地区:<select name="sProvince" id="sProvince"></select><select name="sCity" id="sCity"></select></td></tr>

xml文件:
附:这个地区 可以拿到腾讯的省份城市。在QQ安装的盘中,默认地址:C:\Program Files\Tencent\QQ\I18N\2052\LocList    
 <?xml version="1.0" encoding="utf-8"?>
 <Location>
   <Country Name="中国" Code="1">
     <Provinces Name="北京" Code="1">
       <City Name="东城" Code="1"/>
       <City Name="西城" Code="2"/>
       <City Name="崇文" Code="3"/>
       <City Name="宣武" Code="4"/>
       <City Name="朝阳" Code="5"/>
       <City Name="丰台" Code="6"/>
       <City Name="石景山" Code="7"/>
       <City Name="海淀" Code="8"/>
       <City Name="门头沟" Code="9"/>
       <City Name="房山" Code="11"/>
       <City Name="通州" Code="12"/>
       <City Name="顺义" Code="13"/>
       <City Name="昌平" Code="14"/>
       <City Name="大兴" Code="15"/>
       <City Name="怀柔" Code="16"/>
       <City Name="平谷" Code="17"/>
       <City Name="密云" Code="18"/>
       <City Name="延庆" Code="19"/>
     </Provinces>
     <Provinces Name="天津" Code="2">
       <City Name="和平" Code="1"/>
       <City Name="河东" Code="2"/>
       <City Name="河西" Code="3"/>
       <City Name="南开" Code="4"/>
       <City Name="河北" Code="5"/>
       <City Name="红桥" Code="6"/>
       <City Name="塘沽" Code="7"/>
       <City Name="汉沽" Code="8"/>
       <City Name="大港" Code="9"/>
       <City Name="东丽" Code="10"/>
       <City Name="西青" Code="11"/>
        <!-- 以下省略 -->


js文件:
var jqShow=jQuery.noConflict();

  先说明上面这句话,项目中用JQuery的$选择器时会提示找不到这个符号,应该是冲突了,所以我用jsShow来代替$
jqShow(function(){
                 jqShow("#sCountry").append("<option value='0'>请选择..</option>");
                 jqShow("#sProvince").append("<option value='0'>请选择..</option>");
                 jqShow("#sCity").append("<option value='0'>请选择..</option>");
             })

  页面加载时先给省、市赋值
复制代码

//页面加载时先显示国家 
             jqShow.ajax({
                 url:"http://www.cnblogs.com/XML/world.xml",
                 datatype:"xml",
                 type:"GET",
                 success:function(xmldoc){
                     var valueList = jqShow(xmldoc).find("Country");
                     jqShow(valueList).each(function(){
                         jqShow("#sCountry").append("<option value='"+jqShow(this).attr("Code")+"'>"+jqShow(this).attr("Name")+"</option>");
                     })
                 }
             })
            

复制代码
//国家改变时
             jqShow(function(){
                 jqShow("#sCountry").change(function(){
                          if(jqShow(this).val() == "0")
                         {
                             jqShow("#sProvince").find("option").remove();
                             jqShow("#sProvince").append("<option value='0'>请选择..</option>");
                             jqShow("#sCity").find("option").remove();
                             jqShow("#sCity").append("<option value='0'>请选择..</option>");
                         }else
                         {
                             jqShow("#sProvince").find("option").remove();
                             jqShow("#sProvince").append("<option value='0'>请选择..</option>");
                             jqShow("#sCity").find("option").remove();
                             jqShow("#sCity").append("<option value='0'>请选择..</option>");
                              
                             var selectvalue = jqShow(this).val(); //得到选中国家的value
                             jqShow.ajax({
                             url:"http://www.cnblogs.com/XML/world.xml",
                             type:"get",
                             datatype:"xml",
                             success:function(xml){
                                 var xmldoc = xml;
                                 jqShow(xmldoc).find("Location>Country[Code="+selectvalue+"]").each(function(){
                                     jqShow(this).find("Provinces").each(function(){ //得到国家下所有的省
                                         jqShow("#sProvince").append("<option value='"+jqShow(this).attr("Code")+"'>"+jqShow(this).attr("Name")+"</option>");
                                     })
                                 })
                             }
                         })
                      }
                 })
             })

  
//省份改变后
             jqShow(function(){
                 jqShow("#sProvince").change(function(){
                     if(jqShow(this).val() == "0"){
                         jqShow("#sCity").find("option").remove();
                         jqShow("#sCity").append("<option value='0'>请选择..</option>");
                     }
                     else
                     {
                         var selectvalue = jqShow(this).val();
                         var countryvalue = jqShow("#sCountry").val();
                     jqShow.ajax({
                         url:"http://www.cnblogs.com/XML/world.xml",
                         type:"get",
                         datatype:"xml",
                         success:function(xmldoc){
                             jqShow("#sCity").find("option").remove();
                             jqShow(xmldoc).find("Location>Country[Code="+countryvalue+"]>Provinces[Code="+selectvalue+"]").each(function(){
                                 jqShow(this).find("City").each(function(){
                                     jqShow("#sCity").append("<option value='"+jqShow(this).attr("Code")+"'>"+jqShow(this).attr("Name")+"</option>");
                                 })
                             })
                         }
                      })
                     }
               })
             })
原文:http://www.cnblogs.com/New-world/archive/2012/10/22/2734189.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于 jQueryAjax 的三级下拉菜单代码示例,使用 XML 数据源: HTML 代码: ```html <label for="province">份:</label> <select id="province"></select> <label for="city">城:</label> <select id="city"></select> <label for="district">区县:</label> <select id="district"></select> ``` JavaScript 代码: ```javascript $(document).ready(function() { // 加载份数据 $.ajax({ type: "GET", url: "province.xml", dataType: "xml", success: function(xml) { $(xml).find('province').each(function() { var name = $(this).attr('name'); var code = $(this).attr('code'); $('<option>').val(code).text(name).appendTo('#province'); }); } }); // 当份下拉框改变时,加载对应的城数据 $('#province').change(function() { var provinceCode = $(this).val(); $('#city').empty(); $('#district').empty(); $('<option>').val('').text('--请选择--').appendTo('#city'); $('<option>').val('').text('--请选择--').appendTo('#district'); $.ajax({ type: "GET", url: "city.xml", dataType: "xml", success: function(xml) { $(xml).find('city[province="' + provinceCode + '"]').each(function() { var name = $(this).attr('name'); var code = $(this).attr('code'); $('<option>').val(code).text(name).appendTo('#city'); }); } }); }); // 当城下拉框改变时,加载对应的区县数据 $('#city').change(function() { var cityCode = $(this).val(); $('#district').empty(); $('<option>').val('').text('--请选择--').appendTo('#district'); $.ajax({ type: "GET", url: "district.xml", dataType: "xml", success: function(xml) { $(xml).find('district[city="' + cityCode + '"]').each(function() { var name = $(this).attr('name'); var code = $(this).attr('code'); $('<option>').val(code).text(name).appendTo('#district'); }); } }); }); }); ``` 其中 `province.xml`、`city.xml` 和 `district.xml` 分别是包含份、城和区县数据的 XML 文件。你可以根据自己的需求修改数据源和代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值