首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

怎么将子(child) dropdownlist中取的值,赋给下一级 (parent)dropdownlist

2013-03-10 
求教:如何将子(child) dropdownlist中取的值,赋给上一级 (parent)dropdownlist在web 客户端,通过css + div

求教:如何将子(child) dropdownlist中取的值,赋给上一级 (parent)dropdownlist

在web 客户端,通过css + div模拟了一个 (parent)drop down list,其内部嵌套另一个(child)drop down list, 想将内部子下拉菜单取值后的内容传给外层的drop down list后输出,但不知如何修改代码,求大家帮忙指点一下。以下是代码:

怎么将子(child) dropdownlist中取的值,赋给下一级 (parent)dropdownlist


demo.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
        <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
        <title>Custom Drop-Down List Styling</title>
        <link rel="stylesheet" type="text/css" href="style.css" />
        <link href='http://fonts.googleapis.com/css?family=Lato:300,400,700' rel='stylesheet' type='text/css' />
        <script type="text/javascript" src="modernizr.custom.79639.js"></script> 
        <noscript><link rel="stylesheet" type="text/css" href="noJS.css" /></noscript>    
    </head>
    <body>
        <div class="container">
         
            <!-- Codrops top bar -->
            <div class="codrops-top"></div><!--/ Codrops top bar -->
             
            <header>
             
                <h1>&nbsp;</h1>
                <h2>&nbsp;</h2>
                 
                <nav class="codrops-demos"></nav>
                 
            </header>
             
            <section class="main">
                <div class="wrapper-demo">
                    <div id="dd" class="wrapper-dropdown-1" tabindex="1">
                        <span>Select Contact</span>
                        <ul class="dropdown" tabindex="1">


                            <li><a href="#">
                            <form>
                                    <select id="myselect">
                                        <option value="1">Ed Bradley</option>
                                        <option value="2">Contact2</option>
                                        <option value="3">Contact3</option>
                                    </select>
                                </form>
                                </a>
                            </li>
                            <li><a href="#">
                            <form>
                                    <select id="myselect">
                                        <option value="0">Select a Saved List</option>
                                        <option value="1">List1</option>
                                        <option value="2">List2</option>
                                        <option value="3">List3</option>


                                    </select>
                                </form>
                                </a>
                            </li>
                            <li><a href="#">Active Search - 200 Contacts</a></li>
                            <li><a href="#">All Contacts - 70000 Contacts</a></li>
                        </ul>
                    </div>
                ?</div>
            </section>
             
        </div>
        <!-- jQuery if needed -->
       <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
        <script type="text/javascript">
             
            function DropDown(el) {
                this.dd = el;
                this.placeholder = this.dd.children('span');
                this.opts = this.dd.find('ul.dropdown > li');
                this.val = '';
                this.index = -1;
                this.initEvents();
            }
            DropDown.prototype = {
                initEvents : function() {
                    var obj = this;
 
                    obj.dd.on('click', function(event){


                        $(this).toggleClass('active');
                        return false;
                    });
 
                    obj.opts.on('click',function(){
                        var opt = $(this);
                        obj.val = opt.text();
                        obj.index = opt.index();
                        obj.placeholder.text('Select Contact: ' + obj.val);
                    });
                },
                getValue : function() {
                    return this.val;
                },
                getIndex : function() {
                    return this.index;
                }
            }
 
            $(function() {
 
                var dd = new DropDown( $('#dd') );
 
                $(document).click(function() {
                    // all dropdowns
                    $('.wrapper-dropdown-1').removeClass('active');
                });
 
            });
             
        </script>
    </body>
</html>




style.css
@import url('demo.css');
@import url('font-awesome.css');
 
/* GLOBALS */
 
*,
*:after,
*:before {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;


    padding: 0;
    margin: 0;
}
 
::selection {
    background: transparent; 
}
 
::-moz-selection {
    background: transparent; 
}
 
.wrapper-demo {
    margin: 60px 0 0 0;
    *zoom: 1;
    font-weight: 400;
}
 
.wrapper-demo:after {
    clear: both;
    content: "";
    display: table;
}
 
/* DEMO 1 */
 
.wrapper-dropdown-1 {
    /* Size and position */
    position: relative; /* Enable absolute positionning for children and pseudo elements */
    width: 400px;
    padding: 10px;
    margin: 0 auto;
 
    /* Styles */
    background: #9bc7de;
    color: #fff;
    outline: none;
    cursor: pointer;
 
    /* Font settings */
    font-weight: bold;
}
 
.wrapper-dropdown-1:after {
    content: "";
    width: 0;
    height: 0;
    position: absolute;
    right: 16px;
    top: 50%;
    margin-top: -6px;
    border-width: 6px 0 6px 6px;
    border-style: solid;
    border-color: transparent #fff;    
}
 
.wrapper-dropdown-1 .dropdown {
    /* Size & position */
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
 
    /* Styles */
    background: #fff;
    list-style: none;
    font-weight: normal; /* Cancels previous font-weight: bold; */
 
    /* Hiding */
    opacity: 0;
    pointer-events: none;
}
 
.wrapper-dropdown-1 .dropdown li a {
    display: block;
    text-decoration: none;
    color: #9e9e9e;
    padding: 10px 20px;
}
 
/* Hover state */
.wrapper-dropdown-1 .dropdown li:hover a {
    background: #f3f8f8;
}
 
/* Active state */
.wrapper-dropdown-1.active .dropdown {
    opacity: 1;
    pointer-events: auto;
}
 
.wrapper-dropdown-1.active:after {
    border-color: #9bc7de transparent;
    border-width: 6px 6px 0 6px ;
    margin-top: -3px;
}
 
.wrapper-dropdown-1.active {


  background: #9bc7de;
  background: -moz-linear-gradient(left,  #9bc7de 0%, #9bc7de 78%, #ffffff 78%, #ffffff 100%);
  background: -webkit-gradient(linear, left top, right top, color-stop(0%,#9bc7de), color-stop(78%,#9bc7de), color-stop(78%,#ffffff), color-stop(100%,#ffffff));
  background: -webkit-linear-gradient(left,  #9bc7de 0%,#9bc7de 78%,#ffffff 78%,#ffffff 100%);
  background: -o-linear-gradient(left,  #9bc7de 0%,#9bc7de 78%,#ffffff 78%,#ffffff 100%);
  background: -ms-linear-gradient(left,  #9bc7de 0%,#9bc7de 78%,#ffffff 78%,#ffffff 100%);
  background: linear-gradient(to right,  #9bc7de 0%,#9bc7de 78%,#ffffff 78%,#ffffff 100%);
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#9bc7de', endColorstr='#ffffff',GradientType=1 );
}
 
/* No CSS3 support */
 
.no-opacity       .wrapper-dropdown-1 .dropdown,
.no-pointerevents .wrapper-dropdown-1 .dropdown {
    display: none;
    opacity: 1; /* If opacity support but no pointer-events support */
    pointer-events: auto; /* If pointer-events support but no pointer-events support */
}
 
.no-opacity       .wrapper-dropdown-1.active .dropdown,
.no-pointerevents .wrapper-dropdown-1.active .dropdown {
    display: block;
}





[解决办法]
这里改下试下

obj.opts.on('click',function(){
                        var opt = $(this);
                        var temp = $(this).find('a select');
                        obj.val = temp.val();
                        obj.txt = temp.children('option[value='+obj.val+']').text();
                        obj.index = opt.index();
                        if(obj.val)
                        obj.placeholder.text('Select Contact: ' + obj.val +'  , ' +obj.txt);
                    });
[解决办法]
引用:
这里改下试下

obj.opts.on('click',function(){
                        var opt = $(this);


                        var temp = $(this).find('a select');
                        obj.val = temp……




跟着做了一下,的确不错,但这样取内部dropdownlist值正常了,但取其它值失效
顺便问一下,如果内嵌的下级dropdownlist是autocomplete形式,用此方法是否也可以正常取值?再谢!
[解决办法]
CodePorter@163.com

热点排行