Jsp中使用select的聯動

來源:互聯網
上載者:User

問題:

a表
Code               Name
0001               公司1
0002               公司2
b表
MainCode             SubCode               SubName
0001                       1001                       部門1
0001                       1002                       部門2
0002                       2001                       部門3
0002                       2002                       部門4

2個select。第一個select如果選擇公司1,那麼第二個select就是和它主代碼相同的部門1,部門2
類似於,很多註冊網站中如果一個select選擇“山東”,另一個就是山東的所有地市。如果選擇“山西”。另一個就動態是山西的所有地市。

解決方案1:

<script   language   =   "JavaScript ">
var   onecount;
onecount=0;
subcat   =   new   Array();
<%
int   count   =   0;
java.sql.ResultSet   rs1   =   DBManage.executeQuery( "select   hydm,zhydm,zhymc   from   zhy   ");//讀取資料
while(rs1.next())
{
String   selhydm=rs1.getString( "hydm ").trim();
String   zhydm=rs1.getString( "zhydm ").trim();
String   zhymc=rs1.getString( "zhymc ").trim();  
%>
subcat[ <%=count%> ]   =   new   Array( " <%=zhydm%> ", " <%=selhydm%> ", " <%=zhymc%> ");//產生數組
<%
count   =   count   +   1;
}
if(rs1!=null)   DBManage.closeCOnn();
%>
onecount= <%=count%> ;
function   changelocation(id)
{
document.form1.selzhy.length   =   0;  
var   hydm=id;
var   i;
document.form1.selzhy.options[0]   =   new   Option( '選擇子行業分類 ', ' ');
for   (i=0;i   <   onecount;   i++)
{
if   (subcat[i][1]   ==   hydm)
{  
document.form1.selzhy.options[document.form1.selzhy.length]   =   new   Option(subcat[i][2],   subcat[i][0]);
}                
}
}  
</script>
<table   width= "500 "     border= "0 "   cellspacing= "0 "   cellpadding= "0 "   align= "center ">
<tr>
<td   width= "180 "   height= "20 "   align= "right "> 選擇行業分類: </td>
<td   width= "320 ">
<select   name= "selhy "   onChange= "changelocation(document.form1.selhy.options[document.form1.selhy.selectedIndex].value) "   size= "1 "   >
<option   value= "2 "> 請選擇行業分類 </option>
<%
rs   =   DBManage.executeQuery( "select   *   from   hy ");
while(rs.next())
{
        String   hydm=rs.getString( "hydm ").trim();
        String   hymc=rs.getString( "hymc ").trim();
%>
<option   value= " <%=hydm%> "> <%=hymc%> </option>
<%
}
if(rs!=null)   DBManage.closeCOnn();
%>
</select>
</td>
</tr>
<tr>
<td   height= "20 "   align= "right "> 選擇子行業分類: </td>
<td>
<select   name= "selzhy "   >
<option   value= " "   selected> 請選擇子行業分類 </option>
</select>  
</td>
</tr>
</table>

解決方案2:

<form     name=form1>    
<select     name=province     onchange= "cityName(this.selectedIndex) ">    
      <option     value= " "> 請選擇省名 </option>    
</select>    
 
<select     name=city>    
      <option     value= " "> 請選擇城名 </option>    
</select>    
</form>    
 
<script     language=javascript>    
 
var     city1     =     [ "杭州 ",     "寧波 ",     "溫州 ",     "紹興 ",     "金華 ",     "湖州 "];    
var     city2     =     [ "南京 ",     "蘇州 ",     "無錫 ",     "常州 ",     "鎮江 ",     "徐州 "];    
var     city3     =     [ "合肥 ",     "翕縣 ",     "黃山 ",     "祁門 ",     "休寧 "];    
var     city4     =     [ "南昌 ",     "九江 ",     "贛州 ",     "上饒 ",     "新喻 ",     "景德鎮 "];        
var     provinceName     =     [ "浙江 ",     "江蘇 ",     "安徽 ",     "江西 "];    
 
 
function     province()    
{    
 
              var     e     =     document.form1.province;    
              for     (var     i=0;     i <provinceName.length;     i++)    
                          e.options.add(new     Option(provinceName[i],     provinceName[i]));    
}    
function     cityName(n)    
{    
              var     e     =     document.form1.city;    
              for     (var     i=e.options.length;     i> 0;     i--)         e.remove(i);    
              if     (n     ==     0)     return;    
              var     a     =     eval( "city "+     n);     //得到城市的數組名    
              for     (var     i=0;     i <a.length;     i++)     e.options.add(new     Option(a[i],     a[i]));    
}    
function     window.onload()    
{    
              province();     //初始時給省名下拉式功能表賦內容    
}    
</script>

總結:

靜態實現,可以利用javascript的級聯select,這裡有個很好的封裝類與樣本:http://www.mattkruse.com/javascript/dynamicoptionlist/;還有這裡,另一個樣本:http://www.chinabs.net/js/listdropdownmenu.asp
動態實現,可以利用XML到後台去動態取值,網上也可以搜到相應的例子;

後者主要是為瞭解決資料量較大的情況下Load時間過慢的問題。根據當前的需求,前者應該就可以滿足要求了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.