bulidfer 2018-08-06 13:55 采纳率: 0%
浏览 4682
已结题

select2 多选下拉框的选项 重复 当选中的值为多选项 str拼接做了两次for循环

如何用jquery 实行对 select选中赋值 且不重复拼接 option
图片说明

用了第二个方法 但是 不会回显
图片说明

js代码

 var arrESC = eval(json.listEarScanCp);// arrESC是一个数组频扫结论组合表
                    var arrESA = eval(json.listEarScanAcupoint);// arrESA是一个科研穴位信息
                    var str = "";
                    var str1 = "";
                    for (var i = 0; i < arrESC.length; i++) {
                        str += "<tr>";
                        str += "<td colspan=\"8\">";
                        str += "<div style=\"margin-left: 148px;\" id=\"earScanCp\">";
                        str += "<div style=\"float: left;\">";
                        str += "<textarea style=\"width: 50px;margin-left: -86px;position: absolute;\" id=\"cp_id\" name=\"cp_id\" >"
                                + arrESC[i].id + "</textarea>";
                        str += "<select style=\"width: 60px;height: 36px;margin-left: 20px;\" id=\"gender\" name=\"gender\" >"
                        var myselect = document.getElementById("gender");// 这个获取的是静态jsp页面里标签
                        /*
                         * 下拉框主要是应展示项和所有下拉选项的值判断是否对应 分清主和客
                         * 所有展示项目为主表客表的某一项值和遍历主表的值对应 这里面 下拉框所有选项值是主表
                         */
                        var str1 = "";
                        for (var j = 0; j < myselect.options.length; j++) {// 下拉框是主家从静态页面获取并且遍历它
                            // alert("j值:" + myselect.options[j].value);
                            str += "<option value=\""
                                    + myselect.options[j].value
                                    + "\" "
                                    + (myselect.options[j].value == arrESC[i].gender ? "selected='selected'"
                                            : "") + ">"
                                    + myselect.options[j].text + "</option>";
                        }
                        "</select>";
                        str += "<textarea style=\"width: 50px;margin-left: 10px;\" id=\"min_age\" name=\"min_age\" >"
                                + arrESC[i].min_age + "</textarea>";
                        str += "<textarea style=\"width: 50px;margin-left: 10px;\" id=\"max_age\" name=\"max_age\" >"
                                + arrESC[i].max_age + "</textarea>";

                        /* select2标签开始 */
                        str += "<textarea  style=\"width:300px;margin-left:10px;display:none;\" id=\"strXueweiId\" name=\"strXueweiId\" >"
                                + arrESC[i].xuewei_id + "</textarea>";


                        str += "<select name=\"xuewei_id\" class=\"form-control input-sm downList2\" multiple>";

                        alert("arrESA.length值:" + arrESA.length);
                        // 将arrESC[i].xuewei_id分割成一个数组
                        var arrXueweId = arrESC[i].xuewei_id.split(",");
                        alert("arrXueweId:" + arrXueweId)

                        for (var j = 0; j < arrESA.length; j++) {// 下拉框是主家从静态页面获取并且遍历它
                            for (var k = 0; k < arrXueweId.length; k++) {

                                str += "<option value=\""
                                        + arrESA[j].id
                                        + "\" "
                                        + (arrESA[j].id == arrXueweId[k] ? "selected='selected'"
                                                : "") + ">" + arrESA[j].text
                                        + "</option>";
                            }


                        }
                        "</select>";

执行select2部分

 function select2Execute() {

    $(function() {
        /* 1-本地注入方式 */

        $(".downList2").select2({
            // $("select[name='xuewei_id']").select2({
            // $('select[id="xuewei_id"]').select2({
            // $('#xuewei_id').select2({

            placeholder : "请至少选择一个人名",
            tags : true,
            createTag : function(decorated, params) {
                return null;
            },
            width : '256px',

        });

        function formatState(state) {
            if (!state.id) {
                return state.text;
            }
            var $state = $('<span>' + state.text + '</span>');
            return $state;
        }
        ;

        $('#sel_recommender').select2({
            placeholder : "请选择一个人名",
            templateResult : formatState,
            width : '256px'
        });

        // 通过id获取select2的text值,这里的text值可能有空格,需注意
        function getSelect2Text(obj) {
            var select2Obj = $("select[name='xuewei_id']").select2();
            return select2Obj.find("option:selected").text();
        }

        /* 获取每一个name对应的值 */
        var strXueweiId = "";
        $("[name=xuewei_id]").each(function() {
            alert("this值:" + $(this).val());
            /* 拼接每一项name的值 组合成和其它项目类似 gender那样的数组 */
            strXueweiId += $(this).val() + "-";

        });
        alert("strXueweiId:" + strXueweiId)
        $("#strXueweiId").val(strXueweiId)

    });
}
  • 写回答

6条回答 默认 最新

  • threenewbee 2018-08-06 14:03
    关注

    调试下,无非两个原因,一个是重复添加了,每次下拉打开的时候是不是都加载了一次
    或者多个事件都触发了添加的逻辑

    还有就是
    for (var j = 0; j < arrESA.length; j++) {// 下拉框是主家从静态页面获取并且遍历它
    for (var k = 0; k < arrXueweId.length; k++) {

                                str += "<option value=\""
                                        + arrESA[j].id
                                        + "\" "
                                        + (arrESA[j].id == arrXueweId[k] ? "selected='selected'"
                                                : "") + ">" + arrESA[j].text
                                        + "</option>";
                            }
    
    
                        }
    调试下arrESA和arrXueweId分别是什么
    
    评论

报告相同问题?

悬赏问题

  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决
  • ¥15 关于华为5g模块mh5000-31接线问题
  • ¥15 keil L6007U报错
  • ¥15 webapi 发布到iis后无法访问
  • ¥15 初学者如何快速上手学习stm32?
  • ¥15 如何自动更换布娃娃图片上的衣服
  • ¥15 心理学eprime编程
  • ¥15 arduino esp8266开发
  • ¥15 stm32单片机通过485发送命令给驱动器控制电机转动,同样的代码f103可以控制电机转动,换到f407不能动了,但是用串口助手调试407显示发送的命令都是正确的,卡了好久了这是发送规则