ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:hyroki_124 郵便番号検索フォームにおける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;

エラー:オブジェクトを指定して下さい。
---------------------------------
質問投稿日時:07/10/13 01:25
質問番号:3424538
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

良回答20pt

回答者:yambejp 問題点
(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']でアクセスできます
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:07/10/13 13:48
回答番号:No.2
この回答へのお礼なるほど。

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

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

回答

良回答10pt

回答者:SAYKA >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
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:07/10/13 03:15
回答番号:No.1
この回答へのお礼SAYKAさん

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

ばっちり動きました!感謝します。
参考サイトも参考になりました。
最新から表示回答順に表示良回答のみ表示