2012-07-11 64 views
0

我有兩個html下拉列表,它們的值是通過使用jsp從數據庫中檢索的。現在兩個html下拉列表事件

<% 
    String query =" SELECT question_text,question_id FROM questions WHERE id = ?"; 
    PreparedStatement stmt = conn.prepareStatement(query); 
    stmt.setString(1,request.getParameter("QID")); 
    ResultSet rs = stmt.executeQuery(); 
    if(!rs.next()) {} else {%> 
    <form action="#" method="post"> 
    <p> First Question </p> 
    <select name="currentQuestion"> 
<%do{%> 
<option value="<%=rs.getString("question_id")%>"><%=rs.getString("question_text")%> </option> 
<%}while(rs.next());}%> 
</select> 

<%     
    String query =" SELECT question_text,question_id FROM questions WHERE id = ? AND question id != ? "; 
    PreparedStatement stmt = conn.prepareStatement(query); 
    stmt.setString(1,request.getParameter("QID")); 
    stmt.setString(2,CHOOSEN QUESTION); 
    ResultSet rs = stmt.executeQuery(); 
    if(!rs.next()) {} else {%> 
    <p> Next Question </p> 
<select name="currentQuestion"> 
<%do{%>  
    <option value="<%=rs.getString("question_id")%>"><%=rs.getString("question_text")%></option> 
<%}while(rs.next());}%> 
    </select> 
    </form>  

,我什麼,當用戶從第一個下拉列表中選擇一個具體的問題,第二個下拉列表中的值不包括這個問題? 是否有人知道該怎麼做?

+0

你可以使用Javascript來做到這一點 - 你有任何Javascript(或JQuery)的經驗嗎? – ametren 2012-07-11 17:36:28

+0

其實我不知道如何用Javascript或JQuery做到這一點! – 2012-07-11 18:04:55

回答

1
  1. 您不會在代碼中的任何位置設置CHOOSEN QUESTION
  2. 您忘記了他在option元素中的idname標記。
  3. CHOOSEN QUESTION是變量的非法名稱,因爲它包含空格。
  4. 你不能這樣做你試圖做的事情,因爲這個代碼在用戶選擇一個選項之前在服務器端運行。你可能想要做的是加載所有選項(如果沒有太多),並創建一個JS/jQuery,它將刷新第一個Dropbox的事件onChange上的第二個Dropbox(在用戶選擇一個選項之前 - 您可能希望禁用第二個Dropbox)
  5. 您可能想要做的另一件事是創建一個form,最終將用戶的選擇提交給JSP(服務器端)。
  6. 您也可以實現使用AJAX相同的行爲,你可以找到(使用JS更改選項示例代碼)的該怎麼辦呢here.

更新例如:

<html> 
<head> 
<script type="text/javascript" > 
<!-- hide 

function update(x){ 
    if (x != "null") { 
     if (x == "1") { 
      var jumpmenu2 = document.getElementById("jumpmenu2"); 
      var newOption1 = document.createElement('option'); 
      newOption1.text = "a"; //HERE You'll use newOption1.text = "<?php echo $db_option_text;?>"; 
      newOption1.value = "1"; //HERE You'll use newOption1.text = "<?php echo $db_option_value;?>"; 
      var newOption2 = document.createElement('option'); 
      newOption2.text = "b"; // same like above 
      newOption2.value = "2"; // same like above 
      var newOption3 = document.createElement('option'); 
      newOption3.text = "c"; // same like above 
      newOption3.value = "3"; // same like above 
      jumpmenu2.remove(jumpmenu2.length-1); 
      jumpmenu2.remove(jumpmenu2.length-1); 
      jumpmenu2.remove(jumpmenu2.length-1); 
      try { 
       // For standard browsers 
       jumpmenu2.add(newOption1,null); 
       jumpmenu2.add(newOption2,null); 
       jumpmenu2.add(newOption3,null); 
      } 
      catch (ex) { 
       // For Microsoft Internet Explorer and other non-standard browsers. 
       jumpmenu2.add(newOption1); 
       jumpmenu2.add(newOption2); 
       jumpmenu2.add(newOption3); 
      } 
     } 
     else if (x == "2"){ 
      var jumpmenu2 = document.getElementById("jumpmenu2"); 
      var newOption1 = document.createElement('option'); 
      newOption1.text = "d"; 
      newOption1.value = "1"; 
      var newOption2 = document.createElement('option'); 
      newOption2.text = "e"; 
      newOption2.value = "2"; 
      var newOption3 = document.createElement('option'); 
      newOption3.text = "f"; 
      newOption3.value = "3"; 
      jumpmenu2.remove(jumpmenu2.length-1); 
      jumpmenu2.remove(jumpmenu2.length-1); 
      jumpmenu2.remove(jumpmenu2.length-1); 
      try { 
       // For standard browsers 
       jumpmenu2.add(newOption1,null); 
       jumpmenu2.add(newOption2,null); 
       jumpmenu2.add(newOption3,null); 
      } 
      catch (ex) { 
       // For Microsoft Internet Explorer and other non-standard browsers. 
       jumpmenu2.add(newOption1); 
       jumpmenu2.add(newOption2); 
       jumpmenu2.add(newOption3); 
      } 
     } 
    } 
} 

// end hide --> 
</script> 
</head> 
<body> 
<form name="form1" id="form1"> 
<select name="jumpmenu" name="jumpmenu" onChange="update(document.form1.jumpmenu.options[document.form1.jumpmenu.options.selectedIndex].value)"> 
<option value=1>1</option> 
<option value=2>2</option> 
</select> 
</form> 
<select name="jumpmenu2" id="jumpmenu2"> 
<option value=a id=1>a</option> 
<option value=b id=2>b</option> 
<option value=c id=3>c</option> 
</select> 
</body> 
</html> 
+0

非常感謝您的回答。通過選擇問題我的意思是我剛寫的用戶選擇的值,爲了清楚起見,我爲選擇標籤設置了名稱,爲什麼我需要爲選項標籤這麼做?你能通過代碼示例解釋你的答案嗎? – 2012-07-11 17:41:02

+0

@JavaCrawler爲了實現它,你必須事先從數據庫中讀取所有的選項,並更新這個JS來分別保存相關的值。 – alfasin 2012-07-11 19:02:44