关于下拉框内容过多如何解决

本文介绍了一种解决下拉框选项过多问题的方法,通过使用iframe弹窗展示大量选项,改善用户体验。此方案适用于需要从众多选项中选择的情况,如行业分类等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于下拉框内容过多如何解决

做项目的时候经常遇到下拉框中需要选择的内容过多的情况,有时候多到上千项内容,
选择起来非常不方便
找个好的方法是将下拉框中的内容放到一个iframe中,利用弹出方式来获得选择内容
代码非常简单,但是显示的效果确很明显
index.htm代码如下:

 

<html>
    
<head>
        
<title></title>
        
<style>
            body
{font-size:9pt}
        
</style>
        
<script  language="javascript">
            
function ShowOpenWin(objTag)
            
{
                document.getElementById(
"frmOpenWin").style.display = "block";
                
                
var position = getPos(objTag);                    

                document.getElementById(
"frmOpenWin").style.top =  (position.y+22+ "px";
                document.getElementById(
"frmOpenWin").style.left = position.x+"px";
            }


            
function HiddenAllFlag()
            
{
                
if(event.srcElement.id != "tbxCategory")
                
{
                    document.getElementById(
"frmOpenWin").style.display = "none";
                }

            }

            
            
function getPos(elm)
            
{
                
for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent); 
                
return {x:zx,y:zy}                
            }

        
</script>
    
</head>
    
<body onclick="HiddenAllFlag()">
        旧的行业选择:
<select ID="Select1" NAME="Select1"  style="width:250">
            
<option>农业</option>
            
<option>谷物及其他作物的种植</option>
            
<option>谷物的种植</option>
            
<option>薯类的种植</option>
            
<option>油料的种植</option>
            
<option>豆类的种植</option>
            
<option>棉花的种植</option>
            
<option>麻类的种植</option>
            
<option>糖料的种植</option>
            
<option>烟草的种植</option>
            
<option>其他作物的种植</option>
            
<option>蔬菜、园艺作物的种植</option>
            
<option>蔬菜的种植</option>
            
<option>花卉的种植</option>
            
<option>其他园艺作物的种植</option>
            
<option>水果、坚果、饮料和香料作物的种植</option>
            
<option>水果、坚果的种植</option>
            
<option>茶及其他饮料作物的种植</option>
            
<option>香料作物的种植</option>
            
<option>中药材的种植</option>
            
<option>林业</option>
            
<option>林木的培育和种植</option>
            
<option>育种和育苗</option>
            
<option>造林</option>
            
<option>林木的抚育和管理</option>
            
<option>木材和竹材的采运</option>
            
<option>木材的采运</option>
            
<option>竹材的采运</option>
            
<option>林产品的采集</option>
            
<option>畜牧业</option>
            
<option>牲畜的饲养</option>
            
<option>猪的饲养</option>
            
<option>家禽的饲养</option>
            
<option>狩猎和捕捉动物</option>
            
<option>其他畜牧业</option>
            
<option>渔业</option>
            
<option>海洋渔业</option>
            
<option>海水养殖</option>
            
<option>海洋捕捞</option>
            
<option>内陆渔业</option>
            
<option>内陆养殖</option>
            
<option>内陆捕捞</option>
            
<option>农、林、牧、渔服务业</option>
            
<option>农业服务业</option>
            
<option>灌溉服务</option>
            
<option>农产品初加工服务</option>
            
<option>其他农业服务</option>
            
<option>林业服务业</option>
            
<option>畜牧服务业</option>
            
<option>兽医服务</option>
            
<option>其他畜牧服务</option>
            
<option>
                国际组织
</option>
            
<option>
                村民自治组织
</option>
            
<option>
                社区自治组织
</option>
            
<option>
                基层群众自治组织
</option>
            
<option>
                宗教组织
</option>
            
<option>
                其他社会团体
</option>
            
<option>
                行业性团体
            
</option>
            
<option>
                专业性团体
</option>
            
<option>农、林、牧、渔业</option>
        
</select>
        
<br>
        新的行业选择:
<input type="text" id="tbxCategory" onclick="ShowOpenWin(this);" style="width:250"/>
        
<iframe onlosecapture="HiddenAllFlag()" onblur="HiddenAllFlag()" src="sel.htm" id="frmOpenWin"
            frameborder
="0" style="BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; DISPLAY: none; BORDER-LEFT: 1px solid; WIDTH: 400px; BORDER-BOTTOM: 1px solid; POSITION: absolute; HEIGHT: 350px"></iframe>
    
</body>
</html>

 

sel.htm代码如下: 

 

<html>
    
<head>
        
<style>
            body
{font-size:9pt}
            td
{font-size:9pt}
        
</style>
        
<script language="javascript">
            
var oldBackGroundColor = "";
            
var bClick = false;
            
            
function onclickRow(objid,objName)
            
{
                window.parent.document.getElementById(
"tbxCategory").value = objName+"["+objid+"]";
                window.parent.window.document.getElementById(
"frmOpenWin").style.display = "none";
            }

            
            
function tr_onmouseover(event)
            
{
                bClick 
= true;
                
var objTR = null;
                
                
if(event == null)
                
{
                    event 
= window.event; // For IE
                }

                
var objTag = event.srcElement? event.srcElement : event.target;//For FierFox
                
                
if(objTag.tagName == "TD")
                
{
                    
if(document.all)
                    
{
                        
if(objTag.parentNode.tagName == "TR")
                        
{
                            oldBackGroundColor 
= objTag.parentNode.style.backgroundColor;
                            objTag.parentNode.style.backgroundColor 
= "#99ff00";
                        }

                        
else if(objTag.parentNode.parentNode.tagName == "TR")
                        
{
                            oldBackGroundColor 
= objTag.parentNode.style.backgroundColor;
                            objTag.parentNode.parentNode.style.backgroundColor 
= "#99ff00";
                        }

                    }

                    
else
                    
{
                        
if(objTag.parentNode.tagName == "TR")
                        
{
                            oldBackGroundColor 
= objTag.parentNode.style.backgroundColor;
                            objTag.parentNode.style.backgroundColor 
= "#99ff00";
                        }

                        
else if(objTag.parentNode.parentNode.tagName == "TR")
                        
{
                            oldBackGroundColor 
= objTag.parentNode.style.backgroundColor;
                            objTag.parentNode.parentNode.style.backgroundColor 
= "#99ff00";
                        }

                    }
    
                }

                
else
                
{
                    
if(objTag.tagName == "TR")
                    
{
                        oldBackGroundColor 
= objTag.parentNode.style.backgroundColor;
                        objTag.style.backgroundColor
="#99ff00";
                    }

                    
else if(objTag.parentNode.tagName == "TR")
                    
{
                        oldBackGroundColor 
= objTag.parentNode.style.backgroundColor;
                        objTag.parentNode.style.backgroundColor
="#99ff00";
                    }

                    
else if(objTag.parentNode.parentNode.tagName == "TR")
                    
{
                        oldBackGroundColor 
= objTag.parentNode.style.backgroundColor;
                        objTag.parentNode.parentNode.style.backgroundColor
="#99ff00";
                    }

                }

            }

            
function tr_onmouseout(event)
            
{
                
var objTR = null;
                
if(event == null)
                
{
                    event 
= window.event; // For IE
                }

                
var objTag = event.srcElement? event.srcElement : event.target;//For FierFox
                
                
if(objTag.tagName == "TD")
                
{
                    
if(objTag.parentNode.tagName == "TR" && bClick)
                    
{
                        objTag.parentNode.style.backgroundColor 
= oldBackGroundColor;
                        oldBackGroundColor 
= "";
                    }

                    
else if(objTag.parentNode.parentNode.tagName == "TR" && bClick)
                    
{
                        objTag.parentNode.parentNode.style.backgroundColor 
= oldBackGroundColor;
                        oldBackGroundColor 
= "";
                    }

                }

                
else
                
{
                    
if(objTag.tagName == "TR" && bClick)
                    
{
                        objTag.style.backgroundColor 
= oldBackGroundColor;
                        oldBackGroundColor 
= "";
                    }

                    
else if(objTag.parentNode.tagName == "TR" && bClick)
                    
{
                        objTag.parentNode.style.backgroundColor
=oldBackGroundColor;
                        oldBackGroundColor 
= "";
                    }

                    
else if(objTag.parentNode.parentNode.tagName == "TR" && bClick)
                    
{
                        objTag.parentNode.parentNode.style.backgroundColor
=oldBackGroundColor;
                        oldBackGroundColor 
= "";
                    }

                }

                bClick 
= false;
            }

            
            
function InitRowBackColor(objTable)
            
{
                
for(var i = 0; i < objTable.rows.length; i ++)
                
{
                    
if(document.all)
                    
{
                        objTable.rows[i].style.backgroundColor 
= "";
                    }

                    
else
                    
{
                        objTable.rows[i].style.backgroundColor 
= "";
                    }

                }

            }

        
</script>
    
</head>
    
<body MS_POSITIONING="GridLayout" leftmargin="0" topmargin="0">
        
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="1" bordercolor="#CCCCCC"
            bgcolor
="#999999" ID="Table4">
            
<tr>
                
<td bgcolor="#FFFFFF">行业名称:<input type="text" id="tbxname"><input type="button" id="btnOk" value="查询"></td>
            
</tr>
            
<tr>
                
<td height="58" bgcolor="#FFFFFF">
                    
<table width="99%" border="0" align="center" cellpadding="0" cellspacing="1" bordercolor="#006699"
                        name
="tbData" id="tbData">
                        
<tr bgcolor="#A9D0FC">
                            
<td align="center" height="25px"><b>行业ID</b></td>
                            
<td align="center"><B>行业名称</B></td>
                            
<td align="center"><b>行业说明</b></td>
                        
</tr>
                        
<tr style="cursor:hand" bgcolor="#E9F3FE" onclick="onclickRow('001','农业');" onmouseover="tr_onmouseover()"
                            onmouseout
="tr_onmouseout()">
                            
<TD align="center" height="25">001</TD>
                            
<TD align="center">农业</TD>
                            
<TD>农业说明</TD>
                        
</tr>
                        
<tr style="cursor:hand" bgcolor="#E9F3FE" onclick="onclickRow('002','谷物及其他作物的种植');"
                            onmouseover
="tr_onmouseover()" onmouseout="tr_onmouseout()">
                            
<TD align="center" height="25px">002</TD>
                            
<TD align="center">谷物及其他作物的种植</TD>
                            
<TD>谷物及其他作物的种植说明</TD>
                        
</tr>
                        
<tr style="cursor:hand" bgcolor="#E9F3FE" onclick="onclickRow('003','谷物的种植');" onmouseover="tr_onmouseover()"
                            onmouseout
="tr_onmouseout()">
                            
<TD align="center" height="25px">003</TD>
                            
<TD align="center">谷物的种植</TD>
                            
<TD>谷物的种植说明</TD>
                        
</tr>
                        
<tr style="cursor:hand" bgcolor="#E9F3FE" onclick="onclickRow('004','薯类的种植');" onmouseover="tr_onmouseover()"
                            onmouseout
="tr_onmouseout()">
                            
<TD align="center" height="25px">004</TD>
                            
<TD align="center">薯类的种植</TD>
                            
<TD>薯类的种植说明</TD>
                        
</tr>
                        
<tr style="cursor:hand" bgcolor="#E9F3FE" onclick="onclickRow('005','油料的种植');" onmouseover="tr_onmouseover()"
                            onmouseout
="tr_onmouseout()">
                            
<TD align="center" height="25px">005</TD>
                            
<TD align="center">油料的种植</TD>
                            
<TD>油料的种植说明</TD>
                        
</tr>
                        
<tr style="cursor:hand" bgcolor="#E9F3FE" onclick="onclickRow('006','豆类的种植');" onmouseover="tr_onmouseover()"
                            onmouseout
="tr_onmouseout()">
                            
<TD align="center" height="25px">006</TD>
                            
<TD align="center">豆类的种植</TD>
                            
<TD></TD>
                        
</tr>
                        
<tr style="cursor:hand" bgcolor="#E9F3FE" onclick="onclickRow('007','棉花的种植');" onmouseover="tr_onmouseover()"
                            onmouseout
="tr_onmouseout()">
                            
<TD align="center" height="25px">007</TD>
                            
<TD align="center">棉花的种植</TD>
                            
<TD></TD>
                        
</tr>
                        
<tr style="cursor:hand" bgcolor="#E9F3FE" onclick="onclickRow('008','麻类的种植');" onmouseover="tr_onmouseover()"
                            onmouseout
="tr_onmouseout()">
                            
<TD align="center" height="25px">008</TD>
                            
<TD align="center">麻类的种植</TD>
                            
<TD></TD>
                        
</tr>
                        
<tr style="cursor:hand" bgcolor="#E9F3FE" onclick="onclickRow('009','糖料的种植');" onmouseover="tr_onmouseover()"
                            onmouseout
="tr_onmouseout()">
                            
<TD align="center" height="25px">009</TD>
                            
<TD align="center">糖料的种植</TD>
                            
<TD></TD>
                        
</tr>
                        
<tr style="cursor:hand" bgcolor="#E9F3FE" onclick="onclickRow('010','烟草的种植');" onmouseover="tr_onmouseover()"
                            onmouseout
="tr_onmouseout()">
                            
<TD align="center" height="25px">010</TD>
                            
<TD align="center">烟草的种植</TD>
                            
<TD></TD>
                        
</tr>
                    
</table>
                    
<div style="text-align:right">
                        共500行,50页
                        
<SELECT name="page_size" ID="Select2">
                            
<OPTION value="10" selected>10</OPTION>
                            
<OPTION value="20">20</OPTION>
                            
<OPTION value="30">30</OPTION>
                            
<OPTION value="50">50</OPTION>
                            
<OPTION value="100">100</OPTION>
                        
</SELECT>条记录 <style="color:blue">下一页</A> <style="color:blue">最后页</A> 转到<INPUT style="width:36px" value="1" name="page" ID="Text1">
                        
<INPUT class="btn" type="button" value="go" ID="Button1" NAME="Button1">
                    
</div>
                
</td>
            
</tr>
        
</table>
    
</body>
</html>

 

预览效果如下:

 另:从树中选择数据或其他大量数据中选择数据也可适用该方法

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值