2012-11-25 104 views
1

如果操作轉到其他頁面,是否可以使用javascript獲取表單元素值? 下面是代碼片段來說明我想要做的事:使用javascript訪問不同頁面上的表單元素

的index.html:

<form name="testMe" action="show_music.jsp" method="get"> 
<p>I am interested in these types of music:</p> 
<select id="music" name="music" multiple> 
      <option value="classical">Classical</option> 
      <option value="christian">Christian</option> 
      <option value="alternative">Alternative</option> 
      <option value="rock">Rock</option> 
      <option value="latin">Latin</option> 
      <option value="pop">Pop</option> 
      <option value="disco">Disco</option> 
      </select> 

show_music.jsp

<p>Here are the music styles you like: </p> 
<script type="text/javascript"> 
    var e = document.getElementById("music"); 
    var value = e.options[e.selectedIndex].text; 
    alert("Var is: " + value); 
</script> 

我一直在努力嘗試不同的組合獲取該選擇列表的值,但沒有運氣。它甚至有可能嗎?提前致謝。

回答

0

在這種情況下,最好使用服務器端收集的價值,所以如果可能的話,使用POST代替GET,採用JSP(和你可以很容易地傳遞價值的Javascript):

alert('Var is: <%=request.getParameter("music")%>'); 

或者,如果你不能/不想使用POST,使用查詢字符串解析像一些建議

+0

好了,我簡直不敢相信我忽視編輯jsp!這是我想出的: String [] music = request.getParameterValues(「music」);對於(int i = 0; i 」); } – pipplupp

1

不能從元素中獲得的價值,因爲它不存在了,但表單中的數據發送到新的頁面,你可以從查詢字符串把它撿起來:

var value = querystring("music")[0]; 
alert("Var is: " + value); 

function querystring(key) { 
    var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi'); 
    var r=[], m; 
    while ((m=re.exec(document.location.search)) != null) r.push(m[1]); 
    return r; 
} 
0

由於您的形式得到通過GET方法提交的,或許你可以嘗試這樣的事:

var params = []; 
var split = location.search.replace('?', '').split('&') 
for (var i=0; i++; i<split.length) { 
    params.push(split[i].split("=")); 
} 

這會給你一個列表,其中每個列表項將是由第一個項目爲關鍵另一個列表第二項作爲價值。例如,http://google.com/?abc=def&xyz=123

會給類似:

[ 
    ["abc", "def"], 
    ["xyz", "123"], 
]