1

アクションが別のページに移動する場合、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>

その選択リストの値を取得しようとするさまざまな組み合わせを試してきましたが、うまくいきません。それは可能ですか?前もって感謝します。

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

この場合、サーバー側を使用して値を収集することをお勧めします。したがって、可能であれば、JSPを使用してGETではなくPOSTを使用してください(値をJavascriptに簡単に渡すことができます)。

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

または、POSTを使用できない/使用したくない場合は、いくつかの提案のようにクエリ文字列の解析を使用します

于 2012-11-25T19:03:44.417 に答える
0

フォームは GET メソッドを介して送信されるため、おそらく次のようなことを試すことができます。

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

これにより、すべてのリスト項目がキーとしての最初の項目と値としての 2 番目の項目で構成される別のリストになるリストが得られます。例: http://google.com/?abc=def&xyz=123

次のようなものが得られます:

[
    ["abc", "def"],
    ["xyz", "123"],
]
于 2012-11-25T19:00:34.830 に答える