プロが教える店舗&オフィスのセキュリティ対策術

失礼します。

郵便番号検索フォームを作成しているのですが、
サーバー側の仕様で、郵便番号を入力するtextbox の
name値が固定されています。
必ず「name="p01:03"」と指定しなければなりません。

問題はname値に“:”が使用されているため、Javascriptがうまく動作しません。
※フォーム(CGI)における値の受け渡しは問題ないです。

“:”を避けて実行する方法を探していますが、
うまくいきません。指示を頂けたらと思います。

---------------------------------
HTMLページの郵便番号欄:
<form name="form">・・(略)・・・
郵便番号:<input type="text" size="15" name="p01:03" value="" />

Javascript:
実行させるとindex.cgiのpost1へ値を飛ばします。
var target = 'http://www.テスト/index.cgi?template=zip.html&post1=' + document.form.p01:03.value;

エラー:オブジェクトを指定して下さい。
---------------------------------

A 回答 (2件)

>document.form.p01:03.value


document.form['p01:03'].value
または類似の指定方法だと どう?

http://www.tohoho-web.com/js/form.htm#elements
http://www.tohoho-web.com/js/dom.htm#getElements …
    • good
    • 0
この回答へのお礼

SAYKAさん

回答ありがとうございます。

ばっちり動きました!感謝します。
参考サイトも参考になりました。

お礼日時:2007/10/13 23:18

問題点


(1)formにnameをつけて管理するのは非推奨
(2)さらに悪いのはformにつけた名前がズバリ「form」という予約語
であり、おそらくいろんなところで競合します。

解決策としてはformにidをふってgetElementByIdで得るか、
getElementsByTagName("form")で得たオブジェクトに番号でアクセスする。
たとえば

<form id="form1"></form>
に対しては、var f=document.getElementByTagName("form1")
としてformオブジェクトをえるか、
var fs=document.getElementByTagName("form")
var f=fs[0]
などとする。

で、今回の件はformの子供要素にたいするアクセスなので#1さんの
指摘のようにするかelements要素を使います。
(form要素をfで受けているとしたとき・・・)
f['p01:03']もしくはf.elements['p01:03']でアクセスできます
    • good
    • 0
この回答へのお礼

なるほど。

解決策だけでなく問題の指摘も頂けて嬉しく思います。
しかも他にもこんな方法があったなんて、、、

今後の参考になります。
ありがとうございました。

お礼日時:2007/10/13 23:36

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