複数のformから値を取得する方法
複数のformから値を取得する方法
AというASPには複数のformがあります。
DBの取得結果を表示しており、countには取得件数が入ってます。
また、件数分同じformがあり、判別はnameにて行っています。
検索件数<%=count %>件
<input type="button" value="一括修正" action="Update()">
<% Do Until rs.EOF %>
<form method="POST" target="main" name="updatename<%=ii%>">
<input type="hidden" name="no" value="<%= rs.Fields.Item("NO").Value %>"
…
</form>
…
<% ii= ii+1
rs.MoveNext
Loop%>
受け取り側のBというASPでは
<form method="POST" name="update">
<%For i = 1 To count%>
<input type="hidden" name="no<%=i%>" value="<%=Server.HTMLEncode(Request.Form("No" & i)) %>">
<%Next%>
</form>
のようにループにて送信側のデータを取得しています。
このAとBの間をjavascript(外部ファイル)にてやろうと思っています。
Javascript(データ受け渡し)
function Update() {
var Cnt
for (Cnt=1; Cnt<count ; Cnt++){ // 件数分ループ
var No(Cnt) = document.all.updatename(Cnt).no.value;
document.update.no(Cnt).value=No(Cnt);
}
document.update.action = "B.asp";
document.update.target = "main";
document.update.submit();
}
やりたい事は、Aというファイルにある複数のformから値を取得し、Bというファイルにある項目に設定する、という事なのですが、上手くいきません。
・Aというページの件数をjavascriptで使用する方法
・Aというページの複数formから値を取得する方法
document.allを使用すると上手くいく、とネットで検索してわかったのですが、いまいち使用方法がわからず、こまっています・・・。
どうか宜しくお願いします。
投稿日時 - 2005-11-30 13:11:26
このQ&Aは役に立ちましたか?
0人が「このQ&Aが役に立った」と投票しています
回答(3)
#2はあくまでも複数のformを検索する方法です。
ホントに私の言いたかったのはこういうことなんです
けど・・・。
(書式があってるかどうかは知りません)
<form method="POST" target="main">
<% Do Until rs.EOF %>
<input type="hidden" name="no" value="<%= rs.Fields.Item("NO").Value %>"
…
…
<% ii= ii+1
rs.MoveNext
Loop%>
</form>
投稿日時 - 2005-12-01 10:05:22
<input type="button" value="一括修正" action="Update()">
<% Do Until rs.EOF %>
<form method="POST" target="main" action= "aaba.asp">
<input type="submit" value="修正">
<input type="hidden" name="no" value="<%= rs.Fields.Item("NO").Value %>"
</form>
<form method="POST" target="main" action= "bbab.asp">
<input type="submit" value="削除">
<input type="hidden" name="no" value="<%= rs.Fields.Item("NO").Value %>"
</form>
…
…
<% ii= ii+1
rs.MoveNext
Loop%>
ソースはこんな風になっているんで、1つのFormで大きく囲む事はできないんです。
一件に対する処理画面もあるので、一つで大きく囲むとそちらの処理画面にて値を簡単に取れなくなる上、不具合の元になるので、使用できないのです・・・。
投稿日時 - 2005-12-01 11:22:31
私はサーバーサイドのjavascriptには詳しくない
のでなんともいえませんが、loopの外側に
formを1つ書けばすむ書式にも見えますが・・・。
とりあえずサンプルとしてこんな感じの書いて
みました。参考になれば・・・
//formtest.htm
<form>
<input type="text" value="xxx" name="no1">
</form>
<form>
<input type="text" value="yyy" name="no2">
</form>
<form>
<input type="text" value="zzz" name="no3">
</form>
<form action="formtest.htm" method="get" onSubmit="return sendall(this)">
<input type=submit value=send>
</form>
<script language=javascript>
function sendall(f){
for(var i=0;i<document.forms.length;i++){
if (document.forms[i]!=f){
for(var j=0;j<document.forms[i].elements.length;j++){
f.innerHTML +="<input type='hidden' name='"+document.forms[i].elements[j].name+"' value='"+document.forms[i].elements[j].value+"'>";
}
}
}
// alert(f.innerHTML);
return true
}
</script>
投稿日時 - 2005-11-30 23:08:14
ありがとうございます。
yambejpさんのソースを動かしてみようと思います。
Formで囲っている入力フォームが多数ある場合、これだと取得できないような気もしたのですが…。
画面イメージ的にアクセスの表の各行の一番左にボタン(削除、修正)があり、その表の一番上に一括修正ボタンがあるような画面なのです。
ですので、Loopの外にFormを設定するとFormの入れ子になって、余計な値が入ってしまったりする為、Loopの外側を一つのFormで括ることは無理なようです。
投稿日時 - 2005-12-01 01:18:17