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

—— select转成弹出div

2012-04-18 
高手请进 —— select转成弹出divJScript code!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional/

高手请进 —— select转成弹出div

JScript code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>   <title></title>   <style type="text/css">   </style>    <script src="ec/jquery/jquery-1.6.4.min.js" type="text/javascript"></script>   <script type="text/javascript">       $(function () {           $.fn.selectToDiv = function (selectId, colNum, fromFirstOption) {               var $s = $("#" + selectId);               //计算列数量               var opCount = $s.find("option").length - (fromFirstOption ? 0 : 1);               if (opCount < colNum)                   colNum = opCount;               //计算行数量               var rowNum = Math.ceil(opCount / colNum);               var tabId = "table_" + selectId;               var tabHtml = "<table  id='" + tabId + "'cellspacing='0' border='1' style='border-collapse:collapse;cursor:pointer;' >";               var opIdx = fromFirstOption ? 0 : 1;               for (var r = 0; r < rowNum; r++) {                   tabHtml += "<tr>";                   for (var c = 0; c < colNum; c++) {                       if (opIdx <= opCount) {                           var $o = $s.find("option:eq(" + (opIdx++) + ")");                           tabHtml += "<td v=" + $o.val() + " >" + $o.text() + "</td>";                       } else {                           tabHtml += "<td>&nbsp;</td>";                       }                   }                   tabHtml += "</tr>";               }               tabHtml += "</table>";               $("#dT").append(tabHtml);               $("#" + tabId + " td[v]").click(function () {                   $s.val($(this).attr("v"));               });               $s.mouseover(function () {                   $(this).attr("disabled", false); //这一步可以, 但是移开之后, 后面的mouseout就无效了, 可能disabled之后, 事件也被禁止了。               });               $s.mouseout(function () {                   $(this).attr("disabled", true);               }).change(function () {                   return false;               }).click(function () {                   $("#dT").toggle();                   return false;               });           }           $.fn.selectToDiv("selTest", 3, false);       });   </script></head><body>   <select id="selTest">       <option value="0">----请选择----</option>       <option value="1">湖南</option>       <option value="2">湖北</option>       <option value="3">广东</option>       <option value="4">广西</option>       <option value="5">山东</option>       <option value="6">山西</option>       <option value="7">河南</option>       <option value="8">河北</option>       <option value="9">江西</option>       <option value="10">安徽</option>       <option value="11">四川</option>       <option value="12">陕西</option>       <option value="13">甘肃</option>       <option value="14">宁夏</option>       <option value="15">西藏</option>       <option value="16">新疆</option>       <option value="17">黑龙江</option>       <option value="18">辽宁</option>       <option value="19">吉林</option>       <option value="20">福建</option>       <option value="21">江苏</option>       <option value="22">浙江</option>   </select>   <div id="dT" style="display:none;" ></div></body></html> 


目标功能:将select转变成下拉弹出层, 点击select, 不要弹出原来的列表, 而是弹出一个div。
目前的问题:怎么禁止select弹出原来的列表?
不要告诉我不要用select, 换成别的东西了, 取值时比较麻烦的,对项目其它地方改动也太多了。
上面只是我做的一个半成品, ……

[解决办法]
你找个整套的UI解决方案,看一下人家都怎么做的就可以了嘛,extjs 跟jquery easyui都是这样的
[解决办法]
你把弹出的DIV设为最上层试试, 用JQUERY的bgiframe插件, 
这样它在最上层应该就替换掉了SELECT吧 
把SELECT的高度设小,
[解决办法]
可以试试用css div模仿select下拉框
[解决办法]
写一个代理
完全把select隐藏掉
用div在select的原来位置替代显示 和 点击的事件
[解决办法]
建设楼主试试插件,Chosen,我有个项目是用这个。
http://www.aqee.net/docs/Chosen/Chosen.htm
[解决办法]
HTML code
<!DOCTYPE html><html><head>    <title></title>    <script src="jquery.js" type="text/javascript"></script>    <style>                .option{            background-color: white;        }        .optionHover{            background-color: blue;            color: white;        }    </style></head><body id="bd">    <form id="myform">        <select id="sel">            <option value="0">---请选择---</option>            <option value="1">第一项</option>            <option value="2">第二项</option>        </select>    </form>    <script>        $.fn.wrap = function(){            var pos = this.position(),                div = $("<div/>"),                panel = $("<div/>"),                input = $("<input type=text />"),                sel = this;            input.val(this[0].children[this[0].selectedIndex].innerHTML);            buildPanel(sel);            panel.hide();            div.append(input).append(panel);            div.css({                position: "absolute",                top: pos.top,                left: pos.left,                "z-index": 1000,                border: "1px solid gray"            });            div.insertBefore(this);            this.css("visibility", "hidden");                        function buildPanel(sel){                for(var i = 0, opts = sel.children(), len = opts.length; i < len; i++){                    var entry = $("<div/>").attr({                        "data-value": opts[i].value,                        "data-index": i,                        "class": "option"                    }).html(opts[i].innerHTML).appendTo(panel);                }            }                        input.focus(function(){                panel.show();            });            $(document).click(function(event){                var target = $(event.target);                if(div.has(target).length === 0 && !div.is(target)){                    panel.hide();                }            });            panel.click(function(event){                var target = $(event.target);                if(target.is(".option")){                    input.val(target.attr("data-value"));                    sel.prop("selectedIndex", target.attr("data-index"));                    panel.hide();                }            }).mouseover(function(event){                var target = $(event.target);                if(target.is(".option")){                    target.addClass("optionHover");                }            }).mouseout(function(event){                var target = $(event.target);                if(target.is(".option")){                    target.removeClass("optionHover");                }            });        }        $("#sel").wrap();    </script></body></html> 

热点排行