- 締切済み
一度もフォーカスされないテキストフィールドの内容をJavascriptで書き換えるには?
http://www.d-project.com/zenhanconv/index.html ここで頂いてきたスクリプトで、テキストフィールド内の半角カナを全角に置き換えようとしています。 このダウンロードページにあるサンプルフォームをほぼそのまま流用しようとしているのですが、このままの場合、テキストフィールドに何か文字列を打ち込んでフォーカスを外すとonblurでJavascriptが作動して文字列が変換されるのですが、私が使おうとしているフォームはこのページは、ショッピングカートでお届け先を記入してもらうページで、既登録社の場合はテキストフィールドにはページ読込時に外部ファイルから元々文字列が読み込まれてしまうので、文字列を変換したいテキストフィールドは一度もフォーカスされることも書き換えられることもなく、onblurは働かず、仮にonchangeとかにして、書き換えが発生しない以上これも意味を成しません。 onSubmitで何とかならないのかなとも考えたのですが、これはテキストフィールドを対象に使うイベントハンドラではないそうで、やはり対策になりません。 読み込む外部ファイルは元々決まった形で、あるアプリケーションから自動的にアップロードされるファイルなので「外部ファイルを書き出す時点で半角カナを全角に置き換えておく」という方式に変更する方法が無く、また、このフォームを受け取るCGIも他と共用のものなので改造は出来ません。 Javascript内だけで何か対策はないものでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
onSubmitでいけるとおもいますよ・・・ こんな感じかな <script> function func(f){ for(var i=0;i<f.length;i++){ if(f[i].type=="text") f[i].value=f.value.toZenkakuKana() } } </script> <form onSubmit="func(this)"> <input type="text" name="a" value=""> <input type="text" name="b" value=""> <input type="text" name="c" value=""> </form>
お礼
ご回答、どうもありがとうございました。 ははぁ、フォーム自体に適用するスクリプトを作ればいい訳ですね…と実際に組み込ませて頂いたんですがうまく行かず、「これは、CGIが読み込むテンプレートのhtml書類に設置しているからいけないのかなと思って、質問に書かせて頂いたURLのページにある基本的なフォームだけしかない普通のhtmlページを作ってみましたが、それでもvalue.toZenkakuKana()は作動してくれませんでした。 私がこの教えて頂いた func(f)...の部分の理屈が理解できていれば応用が利くのだと思うのですが今は理解できていないので、Webで調べてみようと思います。 どうもありがとうございました。