• 締切済み

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

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.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>

tidu
質問者

お礼

<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で大きく囲む事はできないんです。 一件に対する処理画面もあるので、一つで大きく囲むとそちらの処理画面にて値を簡単に取れなくなる上、不具合の元になるので、使用できないのです・・・。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

私はサーバーサイドの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>

tidu
質問者

お礼

ありがとうございます。 yambejpさんのソースを動かしてみようと思います。 Formで囲っている入力フォームが多数ある場合、これだと取得できないような気もしたのですが…。 画面イメージ的にアクセスの表の各行の一番左にボタン(削除、修正)があり、その表の一番上に一括修正ボタンがあるような画面なのです。 ですので、Loopの外にFormを設定するとFormの入れ子になって、余計な値が入ってしまったりする為、Loopの外側を一つのFormで括ることは無理なようです。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

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

tidu
質問者

お礼

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

関連するQ&A