使用javascript访问不同页面上的表单元素

时间:2012-11-25 18:47:57

标签: javascript forms action

如果操作转到其他页面,是否可以使用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>

我一直在尝试尝试获取该选择列表的值的不同组合,但没有运气。它甚至可能吗?提前谢谢。

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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"],
]

答案 2 :(得分:0)

在这种情况下,最好使用服务器端来收集值,所以如果可能的话,使用POST而不是GET,使用JSP(你可以轻松地将值传递给Javascript):

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

或者,如果您不能/不想使用POST,请使用查询字符串解析,如某些建议的