プロが教えるわが家の防犯対策術!

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を使用すると上手くいく、とネットで検索してわかったのですが、いまいち使用方法がわからず、こまっています・・・。
どうか宜しくお願いします。

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>
    • good
    • 0
この回答へのお礼

<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

私はサーバーサイドの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>
    • good
    • 0
この回答へのお礼

ありがとうございます。
yambejpさんのソースを動かしてみようと思います。
Formで囲っている入力フォームが多数ある場合、これだと取得できないような気もしたのですが…。

画面イメージ的にアクセスの表の各行の一番左にボタン(削除、修正)があり、その表の一番上に一括修正ボタンがあるような画面なのです。
ですので、Loopの外にFormを設定するとFormの入れ子になって、余計な値が入ってしまったりする為、Loopの外側を一つのFormで括ることは無理なようです。

お礼日時:2005/12/01 01:18

formを分けずに1つにまとめればすむのでは?

    • good
    • 0
この回答へのお礼

Aというページが検索結果ページになっていて、そこから各ページ(削除画面など)に飛ぶ仕様なんです。取得結果1件に対して3つのformが既に使われていて、Loopで件数分formがいます。
毎回取得件数が違うので、1つのformにまとめたり、件数を指定したりできないのです・・・。

お礼日時:2005/11/30 15:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!