jquery如何删除name属性相同的select 重复的option值 并保留选中的项

图片说明

第一个select选中项目:  心、食道;
 <select name="xuewei_id" class="form-control input-sm downList2" multiple>
<option value="1" selected='selected'>心</option>
<option value="1" >心</option>
<option value="2" >肺</option>
<option value="2" >肺</option>
<option value="3" >气管</option>
<option value="3" >气管</option>
<option value="4" >口</option>
<option value="4" >口</option>
<option value="5" >食道</option>
<option value="5" selected='selected'>食道</option>
<option value="6" >贲门</option>
<option value="6" >贲门</option>
<option value="7" >胃</option>
<option value="7" >胃</option>
<option value="8" >脾</option>
<option value="8" >脾</option>
<option value="9" >脑干</option>
<option value="9" >脑干</option>
<option value="10" >内分泌</option>
<option value="10" >内分泌</option>
</select>

//第二个select  选中项目: 心
<select name="xuewei_id" class="form-control input-sm downList2" multiple>
<option value="1" selected='selected'>心</option>
<option value="1" >心</option>
<option value="2" >肺</option>
<option value="2" >肺</option>
<option value="3" >气管</option>
<option value="3" >气管</option>
<option value="4" >口</option>
<option value="4" >口</option>
<option value="5" >食道</option>
<option value="5" >食道</option>
<option value="6" >贲门</option>
<option value="6" >贲门</option>
<option value="7" >胃</option>
<option value="7" >胃</option>
<option value="8" >脾</option>
<option value="8" >脾</option>
<option value="9" >脑干</option>
<option value="9" >脑干</option>
<option value="10" >内分泌</option>
<option value="10" >内分泌</option>
</select>
0

12个回答

对于select下的option,最好的option数据是页面加载后获取到数据,再将数据append到select下,这是比较标准的做法,所以html中的select下是空的。你的这个代码里就是一串的option么??两个解决办法。一,在select被触发时,对内部的option选项进行整理去重,在放到select内。二,把option数据放在后台或者数据库,请求后整理去重,在append。

2
u012503756
bulidfer 已经解决 思路就是去重后 用str拼接
大约一年之前 回复
u012503756
bulidfer 看下面我的代码
大约一年之前 回复

加载option的时候去重或者让后端做

0
u012503756
bulidfer 不过还是谢谢
大约一年之前 回复
u012503756
bulidfer 后端给的数据是 没有重复的
大约一年之前 回复

记住:去重尽量在渲染前做

 <select id="s"/>
var map = {};
$("#s").find("option").each(function(){
    var $this = $(ths);
    var v = $this.attr("value");
    if (map[v] ) {
        if (!this.is(":selected") )$this.remove();
    }  else {
        map[v] = true;
    }
});
0

你name设置成不一样的不行吗?为什么要把name设置成一样的?

0
qq_29777207
张乐1993 回复u012503756: 那你动态添加就不要根据name来添加了啊,可以自定义一个标签,我一般都自定义
大约一年之前 回复
u012503756
bulidfer 这个是动态添加的 name必须设成一致 id 不一样的
大约一年之前 回复

图片说明

0

this 如何写 判读 当前option为选中
图片说明

0

图片说明

0

可以在渲染前对数据过滤的,去掉重复,能看一下你是怎么把数据添加进去的吗

0
u012503756
bulidfer 谢谢 请看下图
大约一年之前 回复
 // 添加行 频扫组合表信息
function addRow1() {
    var str = "";
    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\" ></textarea>";
    str += "<select style=\"width: 60px;height: 36px;margin-left: 20px;\" id=\"gender\" name=\"gender\" >"
    var myselect = document.getElementById("gender");// 这个获取的是静态jsp页面里标签
    for (var j = 0; j < myselect.options.length; j++) {// 下拉框是主家从静态页面获取并且遍历它
        str += "<option value=\"" + myselect.options[j].value + "\">"
                + myselect.options[j].text + "</option>";
    }
    "</select>";
    str += "<textarea style=\"width: 50px;margin-left: 10px;\" id=\"min_age\" name=\"min_age\" ></textarea>";
    str += "<textarea style=\"width: 50px;margin-left: 10px;\" id=\"max_age\" name=\"max_age\" ></textarea>";
    // str += "<textarea style=\"width: 300px;margin-left: 10px;\"
    // id=\"xuewei_id\" name=\"xuewei_id\" ></textarea>";
    /* select2标签开始 */
/*  str += "<textarea  style=\"width:300px;margin-left:10px;display:none;\" id=\"strXueweiId\" name=\"strXueweiId\" ></textarea>";
    str += "<select style=\"width: 300px;margin-left:10px;\"name=\"xuewei_id\" class=\"combox\" multiple >"
    str += "<optgroup label=\"小辈儿组\">";
    str += "<option value=\"1\">心</option>";
    str += "<option value=\"2\">" + "肺" + "</option>";
    str += "<option value=\"3\">" + "小肠" + "</option>";
    str += "<option value=\"4\">" + "口" + "</option>";
    str += "<option value=\"5\">" + "食道" + "</option>";
    str += "</optgroup>";
    "</select>";*/

    str += "<textarea  style=\"width:300px;margin-left:10px;display:none;\" id=\"strXueweiId\" name=\"strXueweiId\" ></textarea>";
    str += "<select name=\"xuewei_id\" class=\"form-control input-sm downList2\" multiple>";
    str += "<option></option>";

       "</select>";








    str += "<textarea style=\"width: 220px;margin-left: 10px;\" id=\"chuzhen_id\" name=\"chuzhen_id\" ></textarea>";
    str += "<select style=\"width: 60px;height: 36px;margin-left: 10px;\" id=\"bp\" name=\"bp\" >"
    var myselect1 = document.getElementById("bp");// 这个获取的是静态jsp页面里标签
    for (var k = 0; k < myselect1.options.length; k++) {// 下拉框是主家从静态页面获取并且遍历它
        // alert("j值:" + myselect1.options[k].value);
        // alert("text值:" + myselect1.options[k].text);
        str += "<option value=\"" + myselect1.options[k].value + "\">"
                + myselect1.options[k].text + "</option>";
    }
    "</select>";
    str += "<textarea style=\"width: 50px; height: 36px;margin-left: 10px;\" id=\"jielun_conform\" name=\"jielun_conform\"></textarea>";
    str += "</div>";
    str += "<div >";
    str += " <input type=\"button\" onclick=\"delRow(this)\" value=\"删除\" id=\"deleteESC\" name=\"deleteESC\" style=\"float: left; margin-left:10px; margin-top: 5px;\">";
    str += "</div>";
    str += "</div>";
    str += "</td>";
    str += "</tr>";
    $("#rowTable1").append(str);
    // $("select[name='xuewei_id']").select2({
    // $("#xuewei_id").select2().trigger();
    // $("#xuewei_id").trigger('change')
    select2Execute();
}
0

把完整代码贴一下,我帮你看看

0
wildss
wildss 回复u012503756: 还有你现在需要解决的问题,目前还是不是你标题中的问题了?
大约一年之前 回复
wildss
wildss 回复u012503756: 你最好就是贴出html+js+后端返回的json
大约一年之前 回复
wildss
wildss 回复u012503756: ajax 返回的msg数据样本是什么,发数据结构
大约一年之前 回复
u012503756
bulidfer 谢谢
大约一年之前 回复
共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!