基於bootstrap的下拉選擇 ( combox ) 輸入 ( input ) 功能


需求:

在編輯數據的時候,既可以讓用戶輸入,也可以從下拉框中選擇

思路:

參照下面的效果圖,因為是表格里面的數據,所以下拉框觸發按鈕和輸入框分別為1列,輸入列可以設置是否輸入(方法:<td contenteditable="true">)。圖中沒有設置輸入,因為班級是value,name形式的,只能選擇。

環境:

Chrome+Jquery+bootstrap+HTML5

效果圖:

代碼:

<html>
<head>
<title>Table下拉選擇輸入框</title>
<link href="../lib/bootstrap-3.3.7/css/bootstrap.css" rel="stylesheet">
<script src="../lib/bootstrap-3.3.7/js/jquery-3.1.1.min.js"></script>
<script src="../lib/bootstrap-3.3.7/js/bootstrap.js"></script>
</head>
<style>
.combox-select-div{
    line-height: 30px;
    border-bottom: 1px solid #ccc;
    height:30px;
    width:100%;
    cursor:pointer;
    text-align: center;
    border-buttom:solid 1px gray;
}
.combox-select-div:hover{
    background-color: #ccc;
}
.td-comboxdiv
{
    display:none;
    width:134px;
    height:200px;
    background-color:white;
    overflow:auto;
    overflow-y:scroll;
    position:absolute;
    z-index:1000;
    box-shadow:0 6px 12px rgba(0,0,0,.175);
}
</style>
<script>
$(document).ready(function(){
    //填充數據
    for(var i=1;i<10;i++)
    {
             str = [
                 '<tr id="row_'+i+'">',
                     '<td >小明'+i+'</td>',
                     '<td>男</td>',
                     '<td >2'+i+'</td>',
                     '<td  name="'+i+'"  style="background-color:white;width:100px;border-right: 0px solid #ccc;">GIS120'+i+'</td>',
                     '<td  style="padding:0px;background-color:white;border-left: 0px solid #ccc;width:34px"><button onclick="createDropSelect(this)" type="button" style="margin:1px;float:right;height: 34px;" class="btn btn-default dropdown-toggle"><span class="caret"></span></button></td>',
                    '<td>',
                    '<a class="glyphicon glyphicon-floppy-disk size16" style="cursor:pointer"  title="保存" onclick="saveUpdateLabelDate(this)"></a>',
                    '</td>',
                 '</tr>'      
            ];
            var tbstr=str.join('');
            $('#TempDialogTable').append(tbstr);
    }
});
//點擊下拉按鈕彈出班級下拉框
function createDropSelect(btobj){
           var comboxobj=$('#modalLabelCombox');
            var display =comboxobj.css('display');
            var index=btobj.parentNode.parentNode.offsetTop;
            var left=btobj.parentNode.offsetLeft;
            var rowId=btobj.parentNode.parentNode.id;
           if(display=="none")
           {
                comboxobj.css({"left":left-100,"top":index+40,"display":"block"});
           }
           else
           {
                comboxobj.css("display","none");
           }
           var str=""
           for(var i=1;i<10;i++)
           {
                str+='<div value='+i+' onclick="getDropSelectValue('+rowId+',this)" class="combox-select-div">GIS120'+i+'</div>';
           }
           comboxobj.html(str);
}
//將選擇的班級信息填入到班級列中
    function getDropSelectValue(rowId,selecttext){
            $(rowId.cells[3]).attr("name",$(selecttext).attr("value"));
            rowId.cells[3].innerText=selecttext.innerText;
            $('#modalLabelCombox').css("display","none");
        }
//點擊保存獲取班級信息
    function saveUpdateLabelDate(bdom){
                   var aleteRow=bdom.parentNode.parentNode;
                var  lbId=aleteRow.cells[0].innerText;          //姓名
                var tagid=$(aleteRow.cells[3]).attr("name");   //班級編號
                alert("班級編號:"+tagid);
        }
</script>
<body >
    <div  class="td-comboxdiv" id="modalLabelCombox"></div>
    <table id="TempDialogTable" class="table table-striped table-bordered" >
        <thead style="background-color:#E7E6E6;">
            <tr>
                <th>姓名</th>
                <th>性別</th>
                <th>年齡</th>
                <th colspan=2>班級</th>
                <th>操作</th>
            </tr>
        </thead>
                <tbody></tbody>
    </table>
</body>
</html>

博客源址:http://www.cnblogs.com/GIScore/p/7244227.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM