• 締切済み

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();   }  } }

みんなの回答

noname#84373
noname#84373
回答No.3
noname#84373
noname#84373
回答No.2

ちなみにこんなのはどうでしょう? ボタンは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>

kai1192
質問者

お礼

ご回答ありがとうございます。 こういうやり方もあるのですね!勉強になります☆ 今回はコードが簡潔なNo.1さんのものを使わせていただきました。

noname#84373
noname#84373
回答No.1

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">

kai1192
質問者

お礼

ご回答ありがとうございます! こんなに簡単にできるんですね☆ 恥ずかしながら初心者のため自分でつぎはぎしたコードも理解できていません。なので何が悪かったのかもよくわかっていません↓↓ もしお時間があったら、なぜeventだけだとできなくてevent.keyCodeを送るとできるのか教えていただけると幸いです。

関連するQ&A

専門家に質問してみよう