dポイントプレゼントキャンペーン実施中!

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-u …

出来るだけシンプルな方法で解決策があればご教授をお願いいたします。

【ソース】
・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;
}

A 回答 (1件)

フレームにしたからではなくて、単独でも


 s=id.value[lp]
あたりでエラーが出ていませんか?
(ブラウザによっては通るみたいですが)

この回答への補足

アドバイスありがとうござます。
フレームにすると「style="ime-mode: disabled;"」も機能しなくなります。

いろいろと調べて見たのですが、
何をどうれば良いのかが分かりません。
ご教授頂ければ幸いです。

どうぞよろしくお願いいたします。

補足日時:2012/07/25 18:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!