jquery 10行代码实现省市区联动

 1. html 代码

<div class="div_c_r">
    <select id="sel_provinceid" name="provinceid" onchange="setsel_val(0,1)" style="border: 1px;">
        <option value="">请选择省</option>
    </select>
    <select id="sel_cityid" name="cityid"  onchange="setsel_val(0,2)" style="border: 1px;">
        <option value="">请选择市</option>
    </select>
    <select id="sel_areaid" name="areaid"  style="border: 1px;">
        <option value="">请选择区</option>
    </select>
</div>

PS:如果是vue 版本 更简单 ,一样的思路,这里就不写了,

2. js 代码
 

function setsel_val(group, type){
    letall_sel=["#sel_provinceid","#sel_cityid"  ,"#sel_areaid"];
    let pidem=type==0?null:$(all_sel[type-1]).val(), emid = all_sel[type], clems=all_sel.splice(type);
    for(let em of clems){  $(em).html("<option value=''>-- 请选择--</option>"); }
    $.ajax({ url: '/i/util/getRegion',type: 'POST',data : {type:type,pid:pidem},success: function(data) {
            let opens=[];
            for(var i=0;i<data.length;i++){ opens.push("<option value='"+data[i].id+"'>"+data[i].name+"</option>");}
            $(emid).append(opens.join(""));
        }});
}

3.java 后端

/**
 * 获取申请列表
 * @return
 */
@PostMapping("getRegion")
public Object getRegion(@RequestParam Integer type,Integer pid){
    return     this.utilMapper.getRegion(new String[] {"s_provincelist","s_citylist","s_arealist"}[type], pid);
}

4.mapp.java

public List<HashMap<String,String>> getRegion(@Param("table") String table, @Param("pid") Integer pid);

 

5.sql

<select id="getRegion" resultType="map" >
    select `oid` `id`,`name` from ${table}  <if test="pid!=null"> where pid=#{pid} </if>
</select>

6.数据库

6.1--省

CREATE TABLE `s_provincelist` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `oid` varchar(20) DEFAULT NULL,
  `name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_provinceid` (`oid`)
) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8 COMMENT='省份信息表'

5.2 市

CREATE TABLE `s_citylist` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `oid` varchar(20) DEFAULT NULL,
  `name` varchar(50) DEFAULT NULL,
  `pid` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_cityid` (`oid`)
) ENGINE=InnoDB AUTO_INCREMENT=356 DEFAULT CHARSET=utf8 COMMENT='行政区域地州市信息表'

6.3  区

CREATE TABLE `s_arealist` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `oid` varchar(20) DEFAULT NULL,
  `name` varchar(50) DEFAULT NULL,
  `pid` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_areaid` (`oid`)
) ENGINE=InnoDB AUTO_INCREMENT=3348 DEFAULT CHARSET=utf8 COMMENT='行政区域县区信息表'

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jQuery实现联动可以通过以下步骤来实现: 1. 创建的数据源:你可以在JavaScript中创建一个包含数据的对象或者从后台获取数据。例如: ```javascript var data = { provinces: [ { name: '份1', cities: ['城1', '城2'] }, { name: '份2', cities: ['城3', '城4'] } ], cities: [ { name: '城1', districts: ['域1', '域2'] }, { name: '城2', districts: ['域3', '域4'] } ], districts: [ { name: '域1' }, { name: '域2' }, { name: '域3' }, { name: '域4' } ] }; ``` 2. 创建HTML结构:你可以在HTML中创建三个下拉框,分别用于显示的选择。例如: ```html <select id="province"> <option value="">请选择份</option> </select> <select id="city"> <option value="">请选择城</option> </select> <select id="district"> <option value="">请选择域</option> </select> ``` 3. 编写jQuery代码:根据选择的份和城,动态更新的下拉框选项。例如: ```javascript // 份下拉框改变事件 $('#province').change(function() { var province = $(this).val(); var cities = data.provinces.find(function(item) { return item.name === province; }).cities; // 清空城域下拉框 $('#city').empty().append('<option value="">请选择城</option>'); $('#district').empty().append('<option value="">请选择域</option>'); // 更新城下拉框选项 cities.forEach(function(city) { $('#city').append('<option value="' + city + '">' + city + '</option>'); }); }); // 城下拉框改变事件 $('#city').change(function() { var city = $(this).val(); var districts = data.cities.find(function(item) { return item.name === city; }).districts; // 清空域下拉框 $('#district').empty().append('<option value="">请选择域</option>'); // 更新域下拉框选项 districts.forEach(function(district) { $('#district').append('<option value="' + district + '">' + district + '</option>'); }); }); ``` 这样,当选择份时,城下拉框会根据选择的份进更新;当选择城时,域下拉框会根据选择的城更新。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值