アプリ版:「スタンプのみでお礼する」機能のリリースについて

テキストボックスから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();
  }
 }
}

A 回答 (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>
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/10/15 23:28
    • good
    • 0

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">
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2008/10/15 23:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!