ウィザードのようなイメージでwebページを作りたい時などに、1ページ目のフォームのフィールドに入力された文字列を2ページ目で使用したい場合がある。
そういった場合、2ページ目に設置したhidden属性のテキストボックスに値を保持させる方法があるが、1ページ目に入力された値が、2ページ目のhidden属性のテキストボックスに代入された際に途中で切れてしまう場合がある。
これは、半角スペース(半角の空白)が文字列に含まれていることが原因である。
有名な話?かもしれないが、最近ASP(ASP.NETではありません)でwebサイトを作らなければならず、その作業中に発生して少しはまったので忘れないように覚書しておく。
hidden属性のテキストボックスに前ページの値を保持させる
hidden属性のテキストボックスに前ページの値を保持させる時、例えばこんな記述をする。
<input name="htext1" type="hidden" value=<%=request.Form("txtname")%> />
この記述だと、前ページのテキストボックス(上記の例だと"txtname")に半角のスペースが含まれているデータが入力されているとスペース以降がばっさり切られてしまう。
例えば、"山田 太郎"と入力してあったとすると、"山田"だけしか代入されない。
これを回避するには、hidden属性のテキストボックスに値を代入する前に、半角スペースを" "に置換してから代入すればよい。
置換には、Replace関数を使用すれば簡単にできる。 以下サンプル
変更前
<input name="htext1" type="hidden" value=<%=request.Form("txtname")%> />
変更後
<input name="htext1" type="hidden" value=<%=replace(request.Form("txtname")," "," ")%> />
これで半角スペースが含まれていても問題なく前ページで入力された値がhidden属性のテキストボックスに代入される。
ただし、hidden属性を使用した値の保持はセキュリティ上あまり行うべきことではないと思う。
基本的にはSession変数を使うのがよい。
つーか、今どきASPって...
コメント
普通valueのことを「hidden属性のテキストボックス」とは言わないと思いますよ……。