1

如果操作转到不同的页面,是否可以使用 javascript 获取表单元素值?以下是说明我正在尝试做的代码片段:

索引.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>

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

4

3 回答 3

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;
}
于 2012-11-25T18:56:38.937 回答
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"],
]
于 2012-11-25T19:00:34.830 回答
0

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

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

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

于 2012-11-25T19:03:44.417 回答