初めて質問させていただきます。
現在作成中のWebサイトでIE8以前・IE9以降で同様の動作になるよう
作成中なのですが、表題の部分で詰まってしまいました。
問題は<input>タグのtype="text"もしくはtype="radio"上(以下「入力項目」と表記)で
Enterキーを押下時することで、Tabキーを押下した時と同様に
次の入力項目にフォーカスが移動する処理を行うJavaScriptです。
現在、下記のように作成しましたが動作していません。
//フォーカス遷移(入力項目からonkeydownで呼ばれる)
function hoge() {
key = event.keyCode;
//Enterキー判別
if (key == 13) {
nextFocus(event);
}
}
function nextFocus(e) {
if (document.createEvent) {
//IE9以降
var ev = document.createEvent("KeyboardEvent");
ev.initKeyboardEvent('keypress', true, true, null, false, false, false, false, 9, 0 );
document.activeElement.dispatchEvent(ev);
}else{
//IE8以前
e.keyCode = 9;
}
}
alert()を入れて確認したところ、IEのバージョン判別部は動作しており
IE8ではフォーカス移動が行われていますが、IE9以降(確認環境はIE11)では
フォーカス移動が行われません。また、JavaScriptエラーも発生しません。
initKeyboardEventにはkeypressだけではなく、keydownとkeyupも試してみましたが
いずれも同様に動作しませんでした。
また、document.activeElement.dispatchEvent()をe.target.dispatchEvent()に
変更しても駄目でした。
恥ずかしながら、自分ではお手上げ状態です。
何が悪いのかご教示いただけないでしょうか。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/06 08:00
2015/08/06 08:36