• 締切済み

フレーム内のJavaスクリプトの制御方法について

textとtextareaフォームに文字を入力する際の制御について どのようにすれば良いかご教授頂けばと思います 【やりたい事】 textとtextareaに文字を入力するときに、 「ime-mode: disabled」を使いIMEを直接制御し、 コピー&貼付け対策のため「JavaScript」で、 全角より半角に自動変換されるように制御しました。 下記のソースをhtmlファイルに記述しています。 しかしながら、フレーム内に該当htmlファイルを設定すると、 「ime-mode: disabled」と「JavaScript」で制御している 全角から半角へ自動変換が機能しなくなります。 動作環境は、IE7 ~ IE9を想定しています。 サンプルファイルを下記にアップしました。 https://box.yahoo.co.jp/guest/viewer?sid=box-l-uuwbyy42v2bpqxq7lxcoosuyni-1001&uniqid=65c3cea9-7cd0-4b71-bc86-3213de26599e 出来るだけシンプルな方法で解決策があればご教授をお願いいたします。 【ソース】 ・text: <input type="text" name="text01" value="1入力してください" size="60" style="width:450px;" style="ime-mode: disabled;" onkeyup="chkCode(this);" onfocus="if (this.value == defaultValue) this.value = '';" onblur="if (!this.value) this.value = defaultValue;"> ・textarea: <textarea name="textarea01" id="textarea01" cols="60" rows="5" style="ime-mode: active;" onfocus="if(this.value == this.defaultValue) this.value=''" onblur="if(this.value == '') this.value=this.defaultValue"> ・JavaScrpt: function chkCode(id) { work=''; for (lp=0;lp<id.value.length;lp++) { s=id.value[lp] s={"ー":"-","@":"@","_":"_","/":"/","¥":"?","&":"&","%":"%"}[s]||s unicode=s.charCodeAt(0); if ((0xff0f<unicode) && (unicode<0xff1a)) { work+=String.fromCharCode(unicode-0xfee0); } else if ((0xff20<unicode) && (unicode<0xff3b)) { work+=String.fromCharCode(unicode-0xfee0); } else if ((0xff40<unicode) && (unicode<0xff5b)) { work+=String.fromCharCode(unicode-0xfee0); } else { work+=String.fromCharCode(unicode); } } id.value=work; }

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

フレームにしたからではなくて、単独でも  s=id.value[lp] あたりでエラーが出ていませんか? (ブラウザによっては通るみたいですが)

yumi007
質問者

補足

アドバイスありがとうござます。 フレームにすると「style="ime-mode: disabled;"」も機能しなくなります。 いろいろと調べて見たのですが、 何をどうれば良いのかが分かりません。 ご教授頂ければ幸いです。 どうぞよろしくお願いいたします。

関連するQ&A