HTMLのフォームで記入欄を作って、そこの欄に「ぁ」を記入したら「あ」に変換する
プログラムを作る。
<form name="moji">
<input name="moji_26" type="text" style="width:16px;height:14px;" maxlength="1" onkeyup="Up(this.form.moji_26.value,5);"/>
</form>
(Up()関数が「ぁ」を記入したら「あ」に変換するプログラムである。)
という感じにonkeyupというイベントハンドラを使って書いた。
(onkeyupはキーを押して手を放したら関数を動かしてくれる。)
これで完成だと思った。
ところがである。全角ひらがなの状態でxaと記入欄に打って、
その時にEnter keyをポンと押すと、「ぁ」のままである。
(ただしEnter keyを長押しすると「あ」に変換される。)
原因は、
「ぁ」をEnter keyで確定するのは、Enter keyを押した少し後で、
それが、Enter keyから手を離した時より後であったら、
Enter keyから手を離してUp()関数が動く
↓
「ぁ」をEnter keyで確定
だと思う。
そこでキーボードから手を離して2秒後にUp()関数を動かすプログラムを考えよう。
と、本来のUp()関数をpostUp()関数と名前を変えて、
function Up(mojimojidesuyo,number22){
if(mojimojidesuyo =="ぁ"){
setTimeout(function(){postUp(mojimojidesuyo,number22);},2000);
}
}
setTimeout(function(){postUp(mojimojidesuyo,number22);},2000)
は、2000ミリ秒(2秒)後にpostUp関数を実行しますよという意味。
最初は、
setTimeout(postUp(mojimojidesuyo,number22),2000)
と書いてpostup関数を1秒後に実行しようと思ったが、
無理だった。
postUp関数に引数がある場合、
setTimeout(function(){postUp(mojimojidesuyo,number22);},2000)
こんな感じに書かなければ、postup関数を1秒後に実行できないみたいだ。
0 件のコメント:
コメントを投稿