HTMLでテキストボックスを用意し、フォーカスアウト時に入力チェックを行います。
もし入力チェックで問題があれば、フォーカスをテキストに戻します。
HTML
1<input type="text" id="a" name="a" onblur="test('a')"> 2<input type="text" id="b" name="b" onblur="test('b')">
JavaScript
1function test(id) { 2 var str = document.getElementById(id); 3 if (str.value == '') { 4 alert("値を入力してください"); 5 str.focus(); 6 }
上記のようにして、id=a, id=bともにテキスト未入力でaのテキストからbのテキストにフォーカスが移動した際にアラートの無限ループが始まります。
http://doshirouto.wp.xdomain.jp/web/javascript-web/2644の記事を調べたところ、
★alert()を閉じる際のフォーカスをアラートのウィンドウから外す
★テキストボックスにフォーカスをつける
が、同時に実行される。
結果、テキストボックスにフォーカス⇒フォーカスを外される⇒onblur()が着火。無限ループ。
という結果が出たので、setTimeoutを実装しました。
JavaScript
1function test(id) { 2 var str = document.getElementById(id); 3 if (str.value == '') { 4 alert("値を入力してください"); 5 setTimeout(function() { 6 str.focus(); 7 }, 1} 8 }
テキストが1つであればこちらの対処法で解決するのですが、今回は複数存在するため解決には至りませんでした。
解決策を教えていただけると幸いです。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。