问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求帮忙把下面的json写成一个select三级联动,包含JS、html代码。

发布网友 发布时间:2022-05-16 08:33

我来回答

2个回答

懂视网 时间:2022-05-16 12:54

最近尝试做出一个部门和人员的下拉框联动功能,部门和人员的对应关系是1:N

[html]

<div class="forntName">部门</div>

<div class="inpBox">

<select name="department" id="department" onchange="change();" style="width:200px;" >

<option value='-1'>请选择</option>

<s:iterator value="departmentList">

<option value='<s:property value="departmentCode"/>'><s:property value="departmentName"/></option>

</s:iterator>

<select>

</div>

<span style="white-space:pre"> </span><div class="forntName">人员</div>

<div class="inpBox">

<select name="workorderOperator" id = "workorderOperator" style="width:200px;">

<s:iterator value="userList">

<option value='<s:property value="userName"/>'><s:property value="userName"/></option>

</s:iterator>

</select>

</div>

部门下拉框的onchange()事件走一个AJAX方法,返回一个JSON对象(JSON里放的是个LIST)。

js方法在此页面的写法:

[javascript]

<script type="text/javascript">

function change(){

var departmentCode =$("#department").val();

var params = {

'departmentCode':departmentCode

};

$.ajax({

type: 'get',

url: "departmentChangeEvent.shtml",

cache: false,

data: params,

dataType: 'json',

success: function(data){

var sel2 = $("#workorderOperator");

sel2.empty();

if(data==null)

{

sel2.append("<option value = '-1'>"+"部门人员为空"+"</option>");

}

var items=data.list;

if(items!=null)

{

for(var i =0;i<items.length;i++)

{

var item=items[i];

sel2.append("<option value = '"+item.userName+"'>"+item.userChinesename+"</option>");

};

}

else

{

sel2.empty();

}

},

error: function(){

return;

}

});

//$.post(url, params, callback);

}

[javascript]

</script>

此处返回的data里包含list(list见后文),list里包含着人员的代码,人员的姓名两个属性。然后先把人员下拉框empty(),通过select控件append方法 添加新的下拉框元素。

后台代码:

[java]

public String departmentChangeEvent() throws Exception{

userList=service.queryForList("Workorder.queryUserByDepartmentCode", departmentCode);

if(userList!=null&&userList.size()>0)

{

HttpServletResponse response = ServletActionContext.getResponse();

response.setContentType("text/html;charset=utf-8");

response.setHeader("Pragma","No-cache");

response.setHeader("Cache-Control","no-cache");

response.setHeader("Cache-Control", "no-store");

PrintWriter writer = response.getWriter();

JSONObject json = new JSONObject();

Map map = new HashMap();

map.put("list",userList);

JSONObject jso = JSONObject.fromObject(map);

writer.write(jso.toString());

writer.flush();

writer.close(); }

return null;

}

这个方法是部门切换事件,通过departmentCode(field域,有set,get)来求的当前部门下的用户放到userList中。www.2cto.com

然后通过标准写法把userList放到一个定义好的HashMap中,KEY为list。

[java]

<strong> JSONObject jso = JSONObject.fromObject(map);</strong>

这是最为关键的一步,有的json对象创建方法也可以为JSONObject jso = new JSONObject() ; 然后把list里的记录放入到jso中。。。

在这里是行不通的,前台会认为返回的是个字符串。。。

struts中 返回类型为json

[html]

<action name="departmentChangeEvent" class="workorderAction" method="departmentChangeEvent">

<result type="json">

</result>

</action>

热心网友 时间:2022-05-16 10:02

html 代码:
<div>
    <select id="select1">
        <option value="">--请选择--</option>
    </select>
    <select id="select2">
        <option value="">--请选择--</option>
    </select>
    <select  id="select3">
        <option value="">--请选择--</option>
    </select>
</div>

Jquery js代码:

$(function () {
    var json = '[{"name":"jack","brand":"jack","bname":"\u5c0f\u660e"},{"name":"Black","brand":"Black","bname":"\u5c0f\u9ed1"},' +
            '{"name":"Shawshank","brand":"Shawshank","bname":"\u5f20\u4f1f"},{"name":"Xiao Gang","brand":"Xiao Gang",' +
            '"bname":"\u5c0f\u521a"},{"name":"Cockroach","brand":"Cockroach","bname":"\u5c0f\u667a"},' +
            '{"name":"Depp","brand":"Depp","bname":"\u5c0f\u718a"},{"name":"Mary","brand":"Mary","bname":"\u5c0f\u4e3d"},' +
            '{"name":"Minghao","brand":"Minghao","bname":"\u5c0f\u80d6"},{"name":"Lu Yi","brand":"Lu Yi","bname":"\u963f\u534e"},' +
            '{"name":"Andy","brand":"Andy","bname":"\u534e\u4ed4"}]';
    var object = $.parseJSON(json);
    var $select1 = $("#select1");
    var $select2 = $("#select2");
    var $select3 = $("#select3");
    $.each(object,function(i,item){
        var option1 = '<option data-id="'+i +'" value="'+ item.bname+'">' +item.bname +'</option>';
        $select1.append(option1);
        var option2 = '<option data-id="'+i +'" value="'+ item.name+'">' +item.name +'</option>';
        $select2.append(option2);
        var option3 = '<option data-id="'+i +'" value="'+ item.brand+'">' +item.brand +'</option>';
        $select3.append(option3);
    })

    $select1.on('change',function(){
        var select_id = $(this).find("option:selected").attr("data-id");
        $select2.find("[data-id="+ select_id +"]").attr("selected","true");
        $select2.find("[data-id="+ select_id +"]").siblings().removeAttr("selected");
        $select3.find("[data-id="+ select_id +"]").attr("selected","true");
        $select3.find("[data-id="+ select_id +"]").siblings().removeAttr("selected");
    })
    $select2.on('change',function(){
        var select_id = $(this).find("option:selected").attr("data-id");
        $select1.find("[data-id="+ select_id +"]").attr("selected","true");
        $select1.find("[data-id="+ select_id +"]").siblings().removeAttr("selected");
        $select3.find("[data-id="+ select_id +"]").attr("selected","true");
        $select3.find("[data-id="+ select_id +"]").siblings().removeAttr("selected");
    })
    $select3.on('change',function(){
        var select_id = $(this).find("option:selected").attr("data-id");
        $select1.find("[data-id="+ select_id +"]").attr("selected","true");
        $select1.find("[data-id="+ select_id +"]").siblings().removeAttr("selected");
        $select2.find("[data-id="+ select_id +"]").attr("selected","true");
        $select2.find("[data-id="+ select_id +"]").siblings().removeAttr("selected");
    })
})

我是直接取到你的json,然后解析  循环组成下拉框的,

选择任意一个下拉框,其他下拉框的值都会对应改变,不知道你想要的联动的效果是不是这样

的,有疑问可以再问我

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 &#xF6A2;&#xF374;&#x270B;&#xF343;这四个图是什么成语? “传道授业”的近义词是什么? 学工程造价的有必要考BIM这种证书吗 干甲方需要bim证书吗 工学照顾专业哪个好就业 哪里查看出行排名 运动会的历史是什么? 健康营养的萝卜丸子,怎么做更有嚼劲? 兰州有没有专业清洗旅游鞋(皮革+尼龙面)的店? 寻求皮革清洗店 怎样联系张玉玲来唱客家山歌? 学习抖音直播唱山歌在哪个地方学习唱歌要多少钱 45#钢的化学成分 QQ好友误删了之后大火花巨轮大手大房子还会有吗 睡能给p个发际线。。。 小米恢复出厂设置有什么影响 centos怎么在图形界面和命令行 界面切换 虚拟机centos命令行界面怎么切换 三星折叠手机2021新款韩版现在在抖音直播上卖的这种三星折叠屏的手机,他说是韩版的这个手机能买吗?_百度问一问 收获日2,这是什么情况 传经授道是什么意思 win7系统保护提示无法创建计划任务,点击确定又提示在属性页面中出现意外错误,是怎么回事啊 附魔书怎么用? WIN7 系统还原 出现 无法创建计划任务,原因如下:不支持该请求。(0x80070032) 困扰近义词是什么 ATM清机必须固定的两个人吗 atm机清机后钱不到账怎么投诉 受业的近义词是什么? 愤怒的附魔书怎么用 “有识之士”的近义词是什么? 扫黑风暴哪个台几点演 农业银行多少天清机? 怎样注销重置 银行ATM清机加钞岗岗位 是怎么样的工作 在网上自主注册的工行网银密码忘记了该怎么注销或重置 一般什么时候清机? 扫黑风暴播出时间在哪个台 工商银行atm机里的钱多久会清理 厦门鳕鱼片很出名,去哪买啊? 纠音号可以注销可重置吗