- 締切済み
Firefoxでテキストボックスからボタンにカーソル移動したい。
テキストボックスからEnterキーでボタンにフォーカスを移したいと思い以下のように記述しました。 IEでは動作したのですがFirefoxでは動きません。いろいろ調べてevent.keyCodeが使えない場合があるというようなことがわかり、いろんなところからサンプルを引っ張ってくっつけたのですがうまくいきません。 1.どこがいけないのか 2.どうしたら動くのか を教えてください。参考になるURLでもかまいません。よろしくお願いします。 <input id="comment" size="80" onkeypress="return myKeyPress(event);" type="textbox"> <input id="insertButton" onclick="test()" type="button" value="コメント"> function myKeyPress(event){ var strUA = ""; strUA = navigator.userAgent.toLowerCase(); if(strUA.indexOf("firefox") != -1){ //ブラウザの判定 var browser=0; }else if(strUA.indexOf("msie") != -1){ var browser=1; } if(browser==0){ //firefox用 if(event.charCode == 13){ document.getElementById("insertButton").focus(); } }else{ //IE用 if(event.keyCode == 13){ document.getElementById("insertButton").focus(); } } }
- みんなの回答 (3)
- 専門家の回答
みんなの回答
ちなみにこんなのはどうでしょう? ボタンはSHIFT+ENTERになります! ほかでは、ユーザーインターフェースを変えるべきではない!と 怒られますが、ここの板では攻撃する人が少ないようなので・・・ enterをtabに変えるものを以前は使ってました。 このことについては、他の方の意見も聞いてみてください <html> <input type="text"><br> <input type="hidden"> <input type="radio" name="a">A / <input type="radio" name="a">B (カーソルで)<br> <input type="button" value="SHIFT+ENTER" onClick="alert('ok')"><br> <input type="checkbox">スペースキーで<br> <script> document.body.onkeypress = nextFocus; function nextFocus(e){ var obj = e ? e.target: event.srcElement; var evt = e ? e: window.event; switch( evt.keyCode ){ case 13: if(evt.shiftKey && ( obj.type == 'button') || ( obj.type == 'reset' ) || (obj.type=='submit') )return; var elms = document.getElementsByTagName('input'); for( var i=0, m=elms.length; i<m; i++){ if( elms[i] == obj ){ do{ i=(++i)%m; }while(elms[i].type=='hidden') elms[i].focus(); return false; } } case 27: obj.blur(); break; } } </script> </body> </html>
eventじゃなくてevent.keyCodeを送っちゃう! よってブラウザ判定は意味をなさず function myKeyPress(kcode){ if(kcode == 13) document.getElementById("insertButton").focus(); } <input id="comment" size="80" onkeypress="return myKeyPress(event.keyCode);" type="text">
お礼
ご回答ありがとうございます! こんなに簡単にできるんですね☆ 恥ずかしながら初心者のため自分でつぎはぎしたコードも理解できていません。なので何が悪かったのかもよくわかっていません↓↓ もしお時間があったら、なぜeventだけだとできなくてevent.keyCodeを送るとできるのか教えていただけると幸いです。
お礼
ご回答ありがとうございます。 こういうやり方もあるのですね!勉強になります☆ 今回はコードが簡潔なNo.1さんのものを使わせていただきました。