• ベストアンサー

リストボックスで未選択の項目のvalue値を取得したい

リストボックスで選択後送信ボタンにより送信された内容から、 未選択の項目のvalue値を取得したいのですが可能なのでしょうか? やりたいことは、送信したリストボックスに表示した全ての項目が知りたく、 さらにその選択状態を判定したいのです。 どうかお力添えを。

質問者が選んだベストアンサー

  • ベストアンサー
  • hequil
  • ベストアンサー率65% (242/372)
回答No.3

リストボックスでも、ラジオボタンでも、チェックボックスでも未選択のvalue値は送信されません。 送信されていないものは取得も出来ないわけで、どうしても取得したいのであれば、hiddenで全ての値も別名で送ってあげる必要があります。 ■ HTML側 <form action="sample.asp" method="post"> <input type="hidden" name="f1" value="aaa"> <input type="hidden" name="f1" value="bbb"> <input type="hidden" name="f1" value="ccc"> <select name="f2" multiple> <option value="aaa">aaa</option> <option value="bbb">bbb</option> <option value="ccc">ccc</option> </select> <input type="submit" value="送信"> </form> ■ASP側(sample.asp) <% Dim i Dim j Response.Write "■リストボックスの値一覧<br>" If Request.Form("f1").Count > 0 Then For i = 1 To Request.Form("f1").Count Response.Write "value=" & Server.HTMLEncode(Request.Form("f1")) & "<br>" Next End If Response.Write "■選択された値<br>" If Request.Form("f2").Count > 0 Then For j = 1 To Request.Form("f2").Count Response.Write "selected value=" & Server.HTMLEncode(Request.Form("f2")) & "<br>" Next End If %> こんな感じでしょうか? #動作テストしてないのでエラー出たらすいません(^^;;

nature-boy
質問者

お礼

細かな説明感謝します。 隠しエリアをとる方法がよさそうですね。 ありがとうございます

その他の回答 (2)

noname#102878
noname#102878
回答No.2

#1さんが言ってることを理解してないようですねぇ。 hoge.aspのリストボックスに「A,B,C,D」と4つのレコードをDBから拾ってきて仕込んだ。 ユーザーがAとCを選択して[送信]ボタンを押した。 hogehoge.aspで再度DBより「A,B,C,D」の4レコードを取得する。 そのうちAとC以外の値が「選択されていない項目」であるわけですよ。 まぁ上記の例ではリストボックスの値をDBから取得して仕込んだことにしていますが、nature-boyさんがどこかから拾ってきた値をご自分で仕込んでいるわけですから、もう一度拾ってくることは可能でしょ?

nature-boy
質問者

お礼

ご回答・補足ありがとうございます。 よく分かりました 確かにDBから取得しています。 レスポンスの点から、DBよりの再取得で差異を取る方法は止めました。 現状、差異はNo.3さんのように隠しエリアを使用して取っています。 ところがリストボックスに表示する情報が長くなったので、 隠しエリアを使用する方法を検討しようとしています。 そこで、未選択の情報を取得できる方法があるかと思ったのですが 無理のようですね。

  • Spur
  • ベストアンサー率25% (453/1783)
回答No.1

開発言語は? そのリストボックスもダイナミック出力すれば分かりますよね? 自分で吐き出したのだから・・・

nature-boy
質問者

補足

ご回答ありがとうございます ひょっとしてSpurさんの意図を汲み取ってないかもしれませんが アドバイスされた内容のレスをさせていただきます。 >開発言語は? Microsoft ASP(サーバーサイドで動かすVBS) IE5.0以上 + + WINDOWS 2000 + SQL SERVERです >そのリストボックスもダイナミック出力すれば分かりますよね? >自分で吐き出したのだから・・・ 一応、送信後以下のようなロジックで検証しています ary_select = split(Request("選択"),",") ctl = Ubound(ary_select) for i = 0 to ctl response.write ary_select(i) next 結果はもちろん選択されているもののVALUE値しか取得できませんでした。 この方法以外で、非選択項目のVALUE値も取得できないかと思っての質問です。 なにかお気づきの点がございましたら教えてください

関連するQ&A