2012-02-15 113 views
0

我在html中有兩個下拉列表。這兩個下拉列表正在獲取數據MySQL第一下拉是「主機組」有像「Windows,Linux」的價值和第二下拉是「主機」有價值像「辦公室,家庭,sidearea,本地主機」如何根據以前的下拉值篩選後選擇html下拉值

基本上我想這樣做當我選擇「linux」是hostgroup combobox時,它將過濾「主機」下拉框並在「主機」下拉列表中僅顯示localhost,當我在主機組下拉列表中選擇「windows」時,它將過濾它並從主機下拉列表中刪除localhost

我的HTML填充下拉的代碼是,

html.append("<select id='hosts' name='hosts' style='width: 180px' onchange=\"document.forms['form1'].submit();\">>"); 
     //if(rs != null) 
     //{ 
     while(rshostgroup.next()) 
      { 
        html.append("<option value='"+rshostgroup.getString(2)+"'>"+rshostgroup.getString(1)+"</option>"); 
       //html.append("<option value='web'>web</option>"); 
      } 
     //} 

     html.append("<select>"); 
     html.append("</td>"); 
     html.append("</tr>"); 

     html.append("<tr>"); 
     html.append("<td>"); 
     html.append("Host");   
     html.append("</td>"); 
     html.append("<td>"); 
     html.append("<select id='hosts' name='hosts' style='width: 180px' onchange=\"document.forms['form1'].submit();\">>"); 
     //if(rs != null) 
     //{ 
     while(rshost.next()) 
      { 
        html.append("<option value='"+rshost.getString(2)+"'>"+rshost.getString(1)+"</option>"); 
       //html.append("<option value='web'>web</option>"); 
      } 
     //} 

     html.append("<select>"); 

請不要混淆,什麼html.append是什麼,我是什麼s選項值來自

其實我正在使用字符串生成器追加我的字符​​串生成器HTML在​​文件並調用jsp中的類html附加方法。它工作正常,下拉的選項值從ResultSet rs and rshost填充有來自mysql的數據。

回答

2

首先使用java構建HTML元素是一個非常糟糕的主意。 使用JSTL循環下拉選項,而不是使用Java來吐出HTML代碼。其次,您提到的問題與Java無關,以及與JavaScript有關的所有問題。

嗯,並非完全正確,因爲您可能必須向服務器發出AJAX請求才能獲取值以填充輔助下拉框。

你需要做的是爲主下拉附加一個onChange監聽器,以便當它改變你的javascript代碼時,或者讓AJAX調用服務器來獲取你的輔助下拉框的值,或者使用某些javascript中保存的硬編碼值變量。

您必須遍歷二級下拉列表以刪除所有先前的值並向其添加新的下拉選項,或者您也可以完全刪除二級下拉框並使用基於主下拉列表選項的新值重新創建它框。 互聯網上已經有足夠多的文章,所以請使用你的惡魔Google來找到適合你需求的文章。