• ベストアンサー

郵便番号検索フォームにおけるJavascript 制御で質問です

失礼します。 郵便番号検索フォームを作成しているのですが、 サーバー側の仕様で、郵便番号を入力する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; エラー:オブジェクトを指定して下さい。 ---------------------------------

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

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

問題点 (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']でアクセスできます

hyroki_124
質問者

お礼

なるほど。 解決策だけでなく問題の指摘も頂けて嬉しく思います。 しかも他にもこんな方法があったなんて、、、 今後の参考になります。 ありがとうございました。

その他の回答 (1)

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

>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#getElementsByName

hyroki_124
質問者

お礼

SAYKAさん 回答ありがとうございます。 ばっちり動きました!感謝します。 参考サイトも参考になりました。