こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

投稿日時 - 2008-10-15 15:44:07

QNo.4403583

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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>

投稿日時 - 2008-10-15 16:24:49

お礼

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

投稿日時 - 2008-10-15 23:28:36

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

投稿日時 - 2008-10-15 16:18:16

お礼

ご回答ありがとうございます!
こんなに簡単にできるんですね☆

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

投稿日時 - 2008-10-15 23:25:13

あなたにオススメの質問