多个select下拉框,选中当前某一项,其他下拉框去掉选中的值

前两天在项目开发的时候有个需求是要求多个下拉框,选中某一项后其他下拉框移除该项,虽然写的有点绕,如果那个小伙伴有更好的例子,可以贡献下。先贴几张图看下效果

这是全部下拉框展开的效果图,具体描述看图吧,下面就开始贴代码

html部分

<div class="video_in">
        <p>
            下拉一
            <select name="B1other1_1" id=‘B1other1_1‘ class="select">
                <option value=‘0‘>请选择</option>
                <option value=‘1‘>选择1</option>
                <option value=‘2‘ selected>选择2</option>
                <option value=‘3‘>选择3</option>
                <option value=‘4‘>选择4</option>
            </select>
        </p>
        <p>
            下拉二
            <select name="B1other2_1" id=‘B1other2_1‘ class="select">
                <option value=‘0‘>请选择</option>
                <option value=‘1‘>选择1</option>
                <option value=‘2‘>选择2</option>
                <option value=‘3‘ selected>选择3</option>
                <option value=‘4‘>选择4</option>
            </select>
        </p>
        <p>
            下拉三
            <select name="B1other3_1" id=‘B1other3_1‘ class="select">
                <option value=‘0‘>请选择</option>
                <option value=‘1‘>选择1</option>
                <option value=‘2‘>选择2</option>
                <option value=‘3‘>选择3</option>
                <option value=‘4‘ selected>选择4</option>
            </select>
        </p>
        <p>
            下拉五
            <select name="B1other4_1" id=‘B1other4_1‘ class="select">
                <option value=‘0‘>请选择</option>
                <option value=‘1‘>选择1</option>
                <option value=‘2‘>选择2</option>
                <option value=‘3‘>选择3</option>
                <option value=‘4‘>选择4</option>
            </select>
        </p>
        <p>
            下拉六
            <select name="B1other5_1" id=‘B1other5_1‘ class="select">
                <option value=‘0‘>请选择</option>
                <option value=‘1‘>选择1</option>
                <option value=‘2‘>选择2</option>
                <option value=‘3‘>选择3</option>
                <option value=‘4‘>选择4</option>
            </select>
        </p>
    </div>
    </div>

js部分

$(document).ready(function() {
        var oldvalue = "";      //上一次选中的值
        var currentvalue = "";  //当前选中的值

        $(‘.video_in select‘).each(function() {
            // 默认选中的值
            if ($(this).find("option:selected")) {
                oldvalue = $(this).attr(‘old‘);
                var id = $(this).attr(‘id‘);
                currentvalue = $(this).find(‘option:checked‘).val();
                $(this).attr(‘old‘, currentvalue);
                // 如果this下的某一项被选中,则not这个select find option[value=当前选择的值]外面添加other标签
                // .not(‘option[value=0]‘) 该项是select的第一项 默认value为0
                $(‘.video_in select‘).not(‘#‘ + id).find(‘option[value=‘ + currentvalue + ‘]‘).not(‘option[value=0]‘).wrap(‘<other></other>‘)
            }
        })
        $(‘.video_in select‘).change(function(e) {
            oldvalue = $(this).attr(‘old‘);
            currentvalue = $(this).find(‘option:checked‘).val();
            var id = $(this).attr(‘id‘);
            if (oldvalue != "0") {
                if(currentvalue==0){    //当前选择值等于0的一项 => 第一项(请选择)
                    if($(‘.video_in select‘).find(‘option[value=0]‘).parent().hasClass("select")){
                        $(‘.video_in select‘).not(‘#‘ + id).find(‘option[value=‘ + oldvalue + ‘]‘).unwrap();    //unwrap 移除other
                        $(this).attr(‘old‘, currentvalue);   //更新oldvalue的值 已便下次使用
                        return false;
                    }
                }else{
                    $(‘.video_in select‘).not(‘#‘ + id).find(‘option[value=‘ + oldvalue + ‘]‘).unwrap();
                    $(‘.video_in select‘).not(‘#‘ + id).find(‘option[value=‘ + currentvalue + ‘]‘).wrap(‘<other></other>‘);
                    $(this).attr(‘old‘, currentvalue);  //更新oldvalue的值 已便下次使用
                    if( $(‘.video_in select‘).find(‘option[value=0]‘).parent().hasClass("select")){
                        return false;
                    }
                    $(‘.video_in select‘).find(‘option[value=0]‘).unwrap();

                }
            }else{
                $(‘.video_in select‘).not(‘#‘ + id).find(‘option[value=‘ + currentvalue + ‘]‘).wrap(‘<other></other>‘);
                $(this).attr(‘old‘, currentvalue);   //更新oldvalue的值 已便下次使用
                if( $(‘.video_in select‘).find(‘option[value=0]‘).parent().hasClass("select")){     //如果请选择  退出
                    return false;
                }
                $(‘.video_in select‘).not(‘#‘ + id).find(‘option[value=‘ + oldvalue + ‘]‘).unwrap()

            }
        });
    });

css自己调整就好了

时间: 2024-10-13 01:37:31

多个select下拉框,选中当前某一项,其他下拉框去掉选中的值的相关文章

解决Bui框架下拉框select配合Gird弹出模态编辑框使用,无法选取编辑行的下拉内容.

这个需求比较简单,就是下拉列表的项是异步请求过来的加载的,而点击gird的编辑一行按钮实现动态选择表单的行内容: 点击编辑效果: 图中的RulesDictID项是从后台异步获取的.那么我们在前端这样写: <div class="row-fluid"> <div class="span24"> <div class="panel"> <div class="panel-header"&g

[angular2]select(下拉式菜单)如何设定默认选项,如何显示value而选中的值是key

select(下拉式菜单)如何设定默认选项,如何显示value而选中的值是key 前言 官网甚少提到关于html的下拉式菜单的一些做法,自己因为一些特殊的要求,所以写篇文章记录一下. 范例 如何给一个默认值,并且如果没有选取的话,验证是不通过的状态呢?请参考下面的示例 import { Component } from '@angular/core'; import { NgForm } from "@angular/forms/src/directives"; @Component(

jquery如何删除select下拉菜单中所有的option项

jquery如何删除select下拉菜单中所有的option项:在实际应用中,有可能要求一次性删除所有的select下拉菜单的option选项,方法非常的简单.select下拉菜单: <select id="mayi"> <option value="1">蚂蚁部落一</option> <option value="2">蚂蚁部落二</option> </select> 删除

下拉菜单 ,三级联动 ,夹其它下拉菜单

<form name="form1" method="" action=""> <div class="control-group margin-bottom-10"> <div class="controls"> <lable class="floatleft driverlab">分类:</lable> <div cl

弹出框关闭图标在火狐和谷歌下生效,在IE11下不生效处理

1.问题描述: 如下图弹出框,卸载码为第一个弹出框,检索设备为第二个弹出框,第二个弹出框的关闭图标"X"在火狐和谷歌下生效,点击可以关闭弹出框,而在IE11下点击不生效,无法关闭弹出框. 2.解决思路: 不兼容IE,在IE下console下会报错,所以考虑给关闭图标加上一个"点击事件". 二种处理方式: 一.首先,获取该iframe层的times值(times值是变化的,初次是2,页面没重新加载的再点击就依次加1) var index=$(window.parent

jquery选中checkbox多选项并添加到文本框中

<script> function check(){ var dd = ""; if($("input[type='checkbox'][name='mokedoc']:checked").attr("checked")){//选中了 $('input:checkbox[name="mokedoc"]:checked').each(function() { alert($(this).val()); dd += $

checkbox复选框和div click事件重叠,点击div后复选框也被选中,同时改变div颜色,否则则不选中

 checkbox复选框和div click事件重叠,点击div后复选框也被选中,同时改变div颜色,否则则不选中 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> div { display: inline-block; width: 100px; margi

C# GDI绘制矩形框,鼠标左键拖动可移动矩形框,滚轮放大缩小矩形框

最近工作需要,要做一个矩形框,并且 用鼠标左键拖动矩形框移动其位置.网上查了一些感觉他们做的挺复杂的.我自己研究一天,做了一个比较简单的,发表出来供大家参考一下.如觉得简单,可路过,谢谢.哈哈. 先大概介绍一下原因,GDI画矩形框就不说了,很简单的.这里面最主要的就是滚轮放大和左键移动两个事件,要计算矩形框的坐标位置.下面将代码贴出如下: 先是定义需要的变量,就四个变量. //矩形框坐标        private Rectangle DrawRect = new Rectangle(0, 0

Firefox下网页缩放时防止div被挤到下一层

http://wu110cheng.blog.163.com/blog/static/13334965420121120102439190/ Firefox下网页缩放时防止div被挤到下一层 问题:三个div,一个div中包含两个浮动带有border边框的div:且样式设计中保证两个div全部宽度之和等于外层div的宽度.在火狐下缩放网页显示比例小于100%时,会导致右边div被挤到下一行. 案例: <style> *{ margin:0; padding:0;} #box{width:300