二级选择 多选框html,html选择框多级联动

Demo来源:http://www.imuum.com/plugin-jquery-cityselect-js-provinces-linkage-effect.html

我把Demo改写成最多可以到5级联动,需要增加修改也很容易

数据来源,Java端通过Spring boot输出将实体类转成JSON对象,转换效率有点低

TreeItem.java

public class TreeItem {

private String id;

private String pId;

private String name;

private String extra;

public TreeItem(String id,String pId,String name) {

this.id = id;

this.pId = pId;

this.name = name;

}

public TreeItem(String id,String pId, String name, String extra) {

this.id = id;

this.pId = pId;

this.name = name;

this.extra = extra;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getpId() {

return pId;

}

public void setpId(String pId) {

this.pId = pId;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}Tree.java

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class Tree {

private List nodes;

public Tree(List nodes){

this.nodes = nodes;

}

public Map buildTree(){

List> list=new ArrayList<>();

for (TreeItem node : nodes) {

String id = node.getId();

if (node.getpId() == null) {

list.add(build(node));

}

}

Map treeMap=new HashMap<>();

treeMap.put("citylist",list);

return treeMap;

}

private Map build(TreeItem node){

List children = getChildren(node);

List> list=new ArrayList<>();

Map map=new HashMap<>();

map.put("node",node);

if (children.isEmpty()) {

return map;

}

for (TreeItem child : children) {

list.add(build(child));

}

map.put("children",list);

return map;

}

private List getChildren(TreeItem node){

List children = new ArrayList();

String id = node.getId();

for (TreeItem child : nodes) {

if (id.equals(child.getpId())) {

children.add(child);

}

}

return children;

}

}通过调用Tree.buildTree函数就可以生成我们需要的json数据

然后就是前端页面了,预设值部分还没有做

index.html

基于jQuery+JSON的省市联动效果

$(function(){

$("#city").citySelect({

nodata:null,

required:false

});

});

设置省份、城市、地区(县)的默认值

三级联动

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现二级的方式有很多,以下是一种常见的做法: 1. 在HTML中定义两个下拉选择框,分别用id属性命名,如下: ```html <label for="province">省份:</label> <select id="province" name="province"> <option value="">请选择</option> <option value="beijing">北京</option> <option value="shanghai">上海</option> <option value="guangdong">广东</option> </select> <label for="city">城市:</label> <select id="city" name="city"> <option value="">请选择</option> </select> ``` 2. 在JavaScript中编写代码,当省份选择框的值发生变化时,根据所选省份态生成城市选项。 ```javascript var citySelect = document.getElementById("city"); var provinceSelect = document.getElementById("province"); var cities = { beijing: ["朝阳区", "海淀区", "东城区"], shanghai: ["黄浦区", "浦东新区", "长宁区"], guangdong: ["广州市", "深圳市", "珠海市"] }; provinceSelect.addEventListener("change", function() { // 清空城市选项 citySelect.innerHTML = "<option value=\"\">请选择</option>"; // 获取所选省份的值 var province = this.value; // 如果所选省份存在城市选项,则态生成城市选项 if (cities[province]) { cities[province].forEach(function(city) { var option = document.createElement("option"); option.value = city; option.textContent = city; citySelect.appendChild(option); }); } }); ``` 3. 根据实际需求调整代码,例如: - 如果省份选项和城市选项不是固定的,可以通过Ajax态获取数据。 - 如果需要将所选省份和城市的值提交到后端,可以在表单提交时获取它们的值,并将其作为表单数据一并提交。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值