zoukankan      html  css  js  c++  java
  • js+CSS 实现可以编辑的下拉列表框

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>可以编辑的下拉列表框实现 - 分享JavaScript</title>
        <style type="text/css">
        
        .selectBoxArrow{
            margin-top:1px;
            float:left;
            position:absolute;
            right:1px;
            
    
        }    
        .selectBoxInput{
            border:0px;
            padding-left:1px;
            height:16px;
            position:absolute;
            top:0px;
            left:0px;
        }
    
        .selectBox{
            border:1px solid #7f9db9;
            height:20px;    
        
        }
        .selectBoxOptionContainer{
            position:absolute;
            border:1px solid #7f9db9;
            height:100px;
            background-color:#FFF;
            left:-1px;
            top:20px;
            visibility:hidden;
            overflow:auto;
        }
        .selectBoxAnOption{
            font-family:arial;
            font-size:12px;
            cursor:default;
            margin:1px;
            overflow:hidden;
            white-space:nowrap;
        }
        .selectBoxIframe{
            position:absolute;
            background-color:#FFF;
            border:0px;
            z-index:999;
        }    
        </style>
        <script type="text/javascript">
        /************************************************************************************************************
        Editable select
        Copyright (C) September 2005  DTHMLGoodies.com, Alf Magne Kalleland
        
        This library is free software; you can redistribute it and/or
        modify it under the terms of the GNU Lesser General Public
        License as published by the Free Software Foundation; either
        version 2.1 of the License, or (at your option) any later version.
        
        This library is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
        Lesser General Public License for more details.
        
        You should have received a copy of the GNU Lesser General Public
        License along with this library; if not, write to the Free Software
        Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
        
        Dhtmlgoodies.com., hereby disclaims all copyright interest in this script
        written by Alf Magne Kalleland.
        
        Alf Magne Kalleland, 2006
        Owner of DHTMLgoodies.com
            
        ************************************************************************************************************/    
    
        
        // Path to arrow images
        var arrowImage = 'images/select_arrow.gif';    // Regular arrow
        var arrowImageOver = 'images/select_arrow_over.gif';    // Mouse over
        var arrowImageDown = 'images/select_arrow_down.gif';    // Mouse down
    
        
        var selectBoxIds = 0;
        var currentlyOpenedOptionBox = false;
        var editableSelect_activeArrow = false;
        
    
        
        function selectBox_switchImageUrl()
        {
            if(this.src.indexOf(arrowImage)>=0){
                this.src = this.src.replace(arrowImage,arrowImageOver);    
            }else{
                this.src = this.src.replace(arrowImageOver,arrowImage);
            }
            
            
        }
        
        function selectBox_showOptions()
        {
            if(editableSelect_activeArrow && editableSelect_activeArrow!=this){
                editableSelect_activeArrow.src = arrowImage;
                
            }
            editableSelect_activeArrow = this;
            
            var numId = this.id.replace(/[^d]/g,'');
            var optionDiv = document.getElementById('selectBoxOptions' + numId);
            if(optionDiv.style.display=='block'){
                optionDiv.style.display='none';
                if(navigator.userAgent.indexOf('MSIE')>=0)document.getElementById('selectBoxIframe' + numId).style.display='none';
                this.src = arrowImageOver;    
            }else{            
                optionDiv.style.display='block';
                if(navigator.userAgent.indexOf('MSIE')>=0)document.getElementById('selectBoxIframe' + numId).style.display='block';
                this.src = arrowImageDown;    
                if(currentlyOpenedOptionBox && currentlyOpenedOptionBox!=optionDiv)currentlyOpenedOptionBox.style.display='none';    
                currentlyOpenedOptionBox= optionDiv;            
            }
        }
        
        function selectOptionValue()
        {
            var parentNode = this.parentNode.parentNode;
            var textInput = parentNode.getElementsByTagName('INPUT')[0];
            textInput.value = this.innerHTML;    
            this.parentNode.style.display='none';    
            document.getElementById('arrowSelectBox' + parentNode.id.replace(/[^d]/g,'')).src = arrowImageOver;
            
            if(navigator.userAgent.indexOf('MSIE')>=0)document.getElementById('selectBoxIframe' + parentNode.id.replace(/[^d]/g,'')).style.display='none';
            
        }
        var activeOption;
        function highlightSelectBoxOption()
        {
            if(this.style.backgroundColor=='#316AC5'){
                this.style.backgroundColor='';
                this.style.color='';
            }else{
                this.style.backgroundColor='#316AC5';
                this.style.color='#FFF';            
            }    
            
            if(activeOption){
                activeOption.style.backgroundColor='';
                activeOption.style.color='';            
            }
            activeOption = this;
            
        }
        
        function createEditableSelect(dest)
        {
    
            dest.className='selectBoxInput';        
            var div = document.createElement('DIV');
            div.style.styleFloat = 'left';
            div.style.width = dest.offsetWidth + 16 + 'px';
            div.style.position = 'relative';
            div.id = 'selectBox' + selectBoxIds;
            var parent = dest.parentNode;
            parent.insertBefore(div,dest);
            div.appendChild(dest);    
            div.className='selectBox';
            div.style.zIndex = 10000 - selectBoxIds;
    
            var img = document.createElement('IMG');
            img.src = arrowImage;
            img.className = 'selectBoxArrow';
            
            img.onmouseover = selectBox_switchImageUrl;
            img.onmouseout = selectBox_switchImageUrl;
            img.onclick = selectBox_showOptions;
            img.id = 'arrowSelectBox' + selectBoxIds;
    
            div.appendChild(img);
            
            var optionDiv = document.createElement('DIV');
            optionDiv.id = 'selectBoxOptions' + selectBoxIds;
            optionDiv.className='selectBoxOptionContainer';
            optionDiv.style.width = div.offsetWidth-2 + 'px';
            div.appendChild(optionDiv);
            
            if(navigator.userAgent.indexOf('MSIE')>=0){
                var iframe = document.createElement('<IFRAME src="about:blank" frameborder=0>');
                iframe.style.width = optionDiv.style.width;
                iframe.style.height = optionDiv.offsetHeight + 'px';
                iframe.style.display='none';
                iframe.id = 'selectBoxIframe' + selectBoxIds;
                div.appendChild(iframe);
            }
            
            if(dest.getAttribute('selectBoxOptions')){
                var options = dest.getAttribute('selectBoxOptions').split(';');
                var optionsTotalHeight = 0;
                var optionArray = new Array();
                for(var no=0;no<options.length;no++){
                    var anOption = document.createElement('DIV');
                    anOption.innerHTML = options[no];
                    anOption.className='selectBoxAnOption';
                    anOption.onclick = selectOptionValue;
                    anOption.style.width = optionDiv.style.width.replace('px','') - 2 + 'px'; 
                    anOption.onmouseover = highlightSelectBoxOption;
                    optionDiv.appendChild(anOption);    
                    optionsTotalHeight = optionsTotalHeight + anOption.offsetHeight;
                    optionArray.push(anOption);
                }
                if(optionsTotalHeight > optionDiv.offsetHeight){                
                    for(var no=0;no<optionArray.length;no++){
                        optionArray[no].style.width = optionDiv.style.width.replace('px','') - 22 + 'px';     
                    }    
                }        
                optionDiv.style.display='none';
                optionDiv.style.visibility='visible';
            }
            
            selectBoxIds = selectBoxIds + 1;
        }    
        
        </script>
    
    </head>
    <body>
    <form>
    <table border="0">
        <tr>
            <td>Where do you come from?</td>
            <td><input type="text" name="myText" value="Norway" selectBoxOptions="Canada;Denmark;Finland;Germany;Mexico;Norway;Sweden;United Kingdom;United States"></td>
        </tr>
        <tr>
            <td>What is your name?</td>
            <td><input type="text" name="myText2" value="" selectBoxOptions="Amy;Andrew;Carol;Jennifer;Jim;Tim;Tommy;Vince"></td>
        </tr>
    </table>
    <p>I.e.: A combination of text- and selectbox. You can type in a value or choose from the list</p>
    </form>
    
    <script type="text/javascript">
    createEditableSelect(document.forms[0].myText);
    createEditableSelect(document.forms[0].myText2);
    </script>
    
    </body>
    </html>
    View Code
  • 相关阅读:
    比率(ratio)|帕雷托图|雷达图|轮廓图|条形图|茎叶图|直方图|线图|折线图|间隔数据|比例数据|标准分数|标准差系数|离散系数|平均差|异众比率|四分位差|切比雪夫|右偏分布|
    质量控制|样本和总体|有限总体和无限总体|样本空间与变量空间|总体变异性|
    基因共线性
    q检验|新复极差法|LSD|二因素方差分析
    Tript协议|伯尔尼公约|著作权|立法宗旨|自动保护|著作权集体管理|
    两块式开头样板
    三块式开头样板
    listening-conversation|信息简写|Generally|回答|矛盾
    Listening-lecture|主旨题|术语解释|举例原则|Crash course 哔哩哔哩
    Do jobs|permanent|secure job|Move|Look after|provide sb with sth|Move|Enjoy a good time|Learn about|Be fond of|Have a clearer idea|String quarter|Be subject to|A has little with B|Pigment
  • 原文地址:https://www.cnblogs.com/lltse/p/3246224.html
Copyright © 2011-2022 走看看