• 締切済み

一度もフォーカスされないテキストフィールドの内容をJavascriptで書き換えるには?

http://www.d-project.com/zenhanconv/index.html ここで頂いてきたスクリプトで、テキストフィールド内の半角カナを全角に置き換えようとしています。 このダウンロードページにあるサンプルフォームをほぼそのまま流用しようとしているのですが、このままの場合、テキストフィールドに何か文字列を打ち込んでフォーカスを外すとonblurでJavascriptが作動して文字列が変換されるのですが、私が使おうとしているフォームはこのページは、ショッピングカートでお届け先を記入してもらうページで、既登録社の場合はテキストフィールドにはページ読込時に外部ファイルから元々文字列が読み込まれてしまうので、文字列を変換したいテキストフィールドは一度もフォーカスされることも書き換えられることもなく、onblurは働かず、仮にonchangeとかにして、書き換えが発生しない以上これも意味を成しません。 onSubmitで何とかならないのかなとも考えたのですが、これはテキストフィールドを対象に使うイベントハンドラではないそうで、やはり対策になりません。 読み込む外部ファイルは元々決まった形で、あるアプリケーションから自動的にアップロードされるファイルなので「外部ファイルを書き出す時点で半角カナを全角に置き換えておく」という方式に変更する方法が無く、また、このフォームを受け取るCGIも他と共用のものなので改造は出来ません。 Javascript内だけで何か対策はないものでしょうか?

  • chack
  • お礼率100% (283/283)

みんなの回答

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

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>

chack
質問者

お礼

ご回答、どうもありがとうございました。 ははぁ、フォーム自体に適用するスクリプトを作ればいい訳ですね…と実際に組み込ませて頂いたんですがうまく行かず、「これは、CGIが読み込むテンプレートのhtml書類に設置しているからいけないのかなと思って、質問に書かせて頂いたURLのページにある基本的なフォームだけしかない普通のhtmlページを作ってみましたが、それでもvalue.toZenkakuKana()は作動してくれませんでした。 私がこの教えて頂いた func(f)...の部分の理屈が理解できていれば応用が利くのだと思うのですが今は理解できていないので、Webで調べてみようと思います。 どうもありがとうございました。

関連するQ&A

  • テキストフィールドに入力された内容に文字列を付加して送信

    氏名[    ] フリガナ[    ] 住所[    ] 建物名[    ] といったフォームからCGIにデータを送信するようになっていて、そのCGIはjcode.plを使った半角カナを全角カナに変換する仕掛けがついているのですが、このフォームに入れられる文字列は短いので完全に置き換えられず、半角カナだけを使って情報を入れられてしまうと文字化けしてしまいます。 また、このように複数のテキストフィールド全てに「半角カナは使えません」というアラートを付ける方法もわかりません。 そこで、このCGIにはいたずら防止機能がついているために例えば「死んでしまえchack」などと入力しても不適切な言葉が自動削除されてただ「chack」だけで処理されるのを逆に利用して、例えば「ナントカマンション」と半角で入力されたら、CGIには「死んでしまえナントカマンション」と「死んでしまえ」という文字列が自動付加されて送信されるようにしたいのですが、その方法がわからなくて困っています。 例えば http://chaichan.web.infoseek.co.jp/qa5500/qa5833.htm このようなページを見つけたのですが、この方法ですと、テキストフィールドでなくテキストエリアである上に、付加した文字列が実際にテキストエリアに出てきてしまって具合が悪いのと、その、文字列が付加された入力内容をどうやってCGIに送信したらいいのかわかりません。 ちなみに、私にはCGIの方をいじって何とかする能力はありません。 普通なら <input name="フリガナ" type="text" id="フリガナ" /> というHTMLになるわですが、これを何かいじって、フォーム上にこの「死んでしまえ」などという不適切な言葉を表示せずにCGIにはそれを付加して送る方法はないでしょうか? どうかよろしくお願い致します。

  • フォーカスする際のテキストフィールド名を変数で渡したい

    表のような入力フォームがあって、submitした際にあるプログラムが走り、HTML本体を再読み込みしています。 画面が表示されたときに、テキストフィールドにあらかじめフォーカスを合わせるには、以下のOnloadとfocus()を使いますよね? <body onLoad="document.Form.Field.focus()"> で、再読み込み時には、次の入力用テキストフィールドへフォーカスを合わせたいのですが、どうすればいいでしょうか? 例えば A1 A2 A3 というとき、A1を入力後、後ろでプログラムが走り、再読み込みして画面が再表示されたときに、A2にフォーカスがうつっている、という感じです。通常の書き方だとBodyにはひとつか(A1しか)かけないので・・・変数を使ったらどうかと思ってやってみましたがうまくいきません。 <SCRIPT LANGUAGE="JavaScript"> <!-- var f; f = "A1"; window.alert(f); //--> </SCRIPT> <body onLoad="document.Form.(f).focus()"> 又は <body onLoad="document.Form.var(f).focus()"> <body onLoad="document.Form.f.focus()"> フィールドにindextabをしてみましたがダメでした。又A1にonBlurが入っております。 そもそも変数なんて使えるのでしょうか? 変数以外の方法でも、他にアイディアがあればお願いします。 締切りが明日で非常にあせっています。 よろしくお願いいたします。

  • 【Javascript】(テキストボックスの)テキストの末尾にフォーカスを置きたい【フォーム】

    onLoad時にテキストボックスにフォーカスをあてるのですが、 質問タイトルのようなことができません。 前ページからPOSTで持ってきた文字列を入れたテキストボックスなのですが、 BODYタグ部分にonLoad="frm.elm.focus();"と書くと、 そのテキストボックス内の文字列の先頭にフォーカスが行きます。 文字列の続きを入力する項目なので 文字列の末尾にフォーカスを置きたいのですが 方法はありますでしょうか。 ご存知の方いらっしゃいましたらご教示願います。 質問が解りづらかったらすみません。 宜しくお願い致します。

  • JavaScriptのfocus()とselect()について

    focus()やselect()では文字列全体が選択されてしまいますが、 以下のようにtext内のテキストの後にカーソルを移動できないか 考えています。 xxxxxxI JavaScriptでなんとか工夫して出来ないでしょうか?

  • フォームのフィールドにはフォーカスの指定

    フォームのフィールドにはフォーカスの指定とはどういう意味でしょうか? ググっても分からないので教えていただけますか? 因にフォームは分かります。 フィールドはページ全体のこと。ですよね。 フォーカスの指定という意味が良く分かりません。 よろしくおねがいします

  • Flash テキストフィールドのフォーカスについて

    お聞きしたいことはFlashのインプットテキストのフォーカスについてです。 パスワードを入力するためのインプットテキストがある画面で、 パスワードの確認のためのポップアップを表示している間は、インプットテキストのフォーカスを外し、入力が出来ないようにしようと思っています。 最初は、ポップアップが出ている間は文字を打てないようにすればいいと思いましたが、それだとあらかじめ「かな文字」で途中まで入力していた文字が消えずに残ってしまい、うまくいきません。 環境は ・Windows XP ・Flash CS3 ・ActionScript3.0 ・FlashPlayer9 です。 ご存知の方がいらっしゃれば、お手数ですがご教授ください。 宜しくお願いします。

  • 複数のテキストフィールドを同時にfocusする

    ブラウザの仕様から考えてもダメもとですが。。。 JavaScriptで1ページに複数あるテキストフィールドを同時にfocusまたは入力値を選択状態する方法はありませんか?JavaScript以外でも構いません。 ちなみに、テキストフィールドのname属性が同じ場合です。 【例】 <form name="form1"> <input type="text" name="qqq" size="30"> </form> <form name="form2"> <input type="text" name="qqq" size="30"> </form>

  • javascriptでフォーカスしたい

    初質問です。 javascriptで たくさんあるテキストボックスの中のひとつをフォーカスした後に リンクのようになっている文字をクリックするとさっきフォーカスした テキストボックスに内容(そのリンクのURLなど)が 自動的に入力されるようなことは、できませんか?

  • MS Wordのテキスト ボックス フォーム フィールドについて

    もらったMS Wordのファイルに「テキスト ボックス フォーム フィールド」がいくつか設定されています。そのひとつをダブルクリックすると「テキスト ボックス フォーム フィールド」というダイアログが現れて、その中の「規定の文字列」にしかるべき文字列が書かれています。しかし、あるものは「規定の文字列」に文字列が書かれていないものがあります。例えば、「This is a pen.」と書かれている「テキスト ボックス フォーム フィールド」をダブルクリックしても、「規定の文字列」は空欄になっています。それでは、この「This is a pen.」という文字列はどこに書かれているのでしょうか? 教えてください。versionはWord 2003です。よろしくお願いします。

  • focus()が上手くいかない

    困っています、助けてください。 フォームのテキストボックスの入力された文字数をチェックし、 サイズオーバーなら、アラートを表示し、テキストボックスにフォーカスを移動させたい。 のですが、上手く動いてくれません。 コードは次の通りです。どこがおかしいのか?どうすれば改善できるのか? 教えてください。 <form method="post" action="#"> <input type="text" name="fmTitle" onBlur="checkText(this)"> </form> <script type="text/javascript"> <!-- function checkText(aText) { if (aText.value.length > 100) { alert('サイズオーバーです'); aText.focus(); } } //--> </script>

専門家に質問してみよう