2011-04-06 21 views
0

我對JavaScript非常陌生,我已經在這工作了好幾個小時了......想想我會問一些專家。在java中獲取選項元素的值

我設置在這個javascript函數的一個選項元素的值:

function receiveAnswer(response) { 
    var aSeats = document.getElementById("aSeats"); 
    aSeats.options.length = 0;// clear it out 

    for (var i = 0; i < response.aSeats.length; i++) { // add the items back in 
    var option = aSeats.appendChild(document.createElement("option")); 
    option.value = i; 
    option.appendChild(document.createTextNode(response.aSeats[i])); 
    } 
} 

下面是HTML:

<% Venue v = (Venue)session.getAttribute("currentVenue"); %> 
<% List<Conceptual_Package> cpList = Conceptual_PackageDAO.getInstance().getByVenue(v.getId()); %> 

What Packages do you want to see? 

<form method="post" action="ttp.actions.Sale3PackAction.action"> 
<select name="packid" id="packid"> 
    <% for (Conceptual_Package cp: cpList) { %> 
    <option value="<%=cp.getId()%>"><%=cp.getName1()%></option> 
    <% } %> 


</select> 

    <input type="button" value=" next " onclick="getSeats();"/> 

    </form> 


<!--new--> 


Available Seats: 

<div> 

</div> 

<select name="aSeats" size="10" id="aSeats"> 
</select> 


    <input type="button" value=" add " onclick="addToCart();"/> 

    <div> 

    </div> 


Selected Seats: 
<form method="post" action="ttp.actions.sale4Action.action"> 
    <select name="Seat2" size="10" id="seat2"> 

    </select> 

<input type="button" value=" remove " onclick="removeFromCart();"/> 

    </form> 

<div> 

</div> 

<form method="post" action="ttp.actions.finalizeSaleAction.action"> 

    <input type="submit" value=" Buy Tickets "/> 

    </form> 

我想在這個Java這些選項元素的值類別:

public class finalizeSaleAction implements Action { 
    public String process(HttpServletRequest request, HttpServletResponse response) throws Exception { 

     HttpSession session = request.getSession(); 
     Venue v = (Venue) session.getAttribute("currentvenue"); 
     Sale s = SaleDAO.getInstance().create(GUID.generate()); 
     if(session.getAttribute("type") == "packages"){ 


      Conceptual_Package cp = (Conceptual_Package) request.getAttribute("cp"); 

      List<Physical_Package> ppList = (List<Physical_Package>) request.getAttribute("seat2"); 

      Physical_Pkg_Set pps = Physical_Pkg_SetDAO.getInstance().create(GUID.generate()); 

      pps.setType("Phys Package Set"); 
      pps.setDiscount(cp.getDiscount()); 
      pps.setVenueID(v.getId()); 

      double price = 0; 

      Object seatList = request.getAttribute("seat2"); 

回答

1

您需要設置選項元素的名稱。當表單提交時,瀏覽器將在查詢或發佈數據中發送name=value

從你的servlet代碼,即可獲得價值爲表單元素有:

request.getParameter(name); 

您可能會看到一個錯誤的IE,使這個複雜的。請參閱:

http://easy-reader.net/archives/2005/09/02/death-to-bad-dom-implementations/

編輯:

如果我理解正確的話,你的表格(你將建立與JS或也許服務器端)可能看起來像:

<html> 
<body> 
    <form action="blah" method="post"> 
    <table> 
    <tr><td>Pink Unicorn</td><td>14.95</td></tr> 
    <tr><td>Sparkly Vampire</td><td>12.99</td></tr> 
    <tr><td colspan="2"><input type="submit" value="do it now" /></td></tr> 
    </table> 
    <input type="hidden" name="item1" value="PU1" /> 
    <input type="hidden" name="item2" value="SV1" /> 
    </form> 
</body> 
</html> 

請注意,<td>在瀏覽器中可見,而<input>則不在。從這個請求後的數據如下所示:

item1=PU1&item2=SV1 
+0

@Tim Sylvester對不起,我不認爲我解釋得很好。我需要從這個select元素中獲取每個選項元素:'' 2011-04-06 04:31:28

+0

是的,我認爲這就是我需要做的。我如何把它放到表單中? – novicePrgrmr 2011-04-06 04:35:26

2

而不是

request.getAttribute("seat2"); 

使用

request.getParameter("seat2"); 

而且擺脫瀏覽器選擇選項元素的所有值。

更改下列選擇標籤

<select name="aSeats" size="10" id="aSeats" multiple="multiple"/> 

這樣,你就可以在服務器端的瀏覽器。而選擇多個選項值,可以retreive所選選項的值類似下面

String[] selectedSeats = request.getParameterValues("seat2"); 

要獲得選擇選項所有值執行以下操作使用jQuery

<input type ="hidden" name ="selectedSeats" id ="selectedSeats" value=""/> 

var optionValues= new Array(); 
$("#aSeats").each(function() 
{ 
    optionValues.push($(this).val()); 
}); 

var selectedValues = optionValues.get().join(','); 
$('#selectedSeats').val(selectedValues); 

從您使用的服務器端。

String seats= request.getParameter("selectedSeats"); 
String selectedSeats[] = seats.split(","); 
+0

有沒有一種方法可以讓它默認選擇全部? – novicePrgrmr 2011-04-06 04:53:20