WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:フォーカスを取得

0:[投稿] ぱんだ [2002/07/29 22:24 ][環境:WIN+IE WIN系+Java]

こんばんは。ぱんだと申します。

早速ですが質問させてください。

tabキーなどで画面上でフォーカスを移動させることができます。
そこで、フォーカスがあたっている部品(フォーム)上で、アクション(イベント)を発生させて、部品の名前を取得することはできるのでしょうか??

実際にはEnterキーを押下することにより、テキストフィールドではフォーカス遷移、ボタン上ではボタン押下という動きを実現したいと思っています。

どなたかアドバイスがありましたらお願いします。


1:[回答] ナン [2002/07/30 17:18 ]

とりあえず、ここが参考になりそうです。
http://www.parkcity.ne.jp/~chaichan/qanda/qa2937.htm


2:[回答] ナン [2002/07/30 17:19 ]

ごめん、もしかして、同じ人!


3:[質問] ぱんだ [2002/07/30 18:12 ]

ナンさんありがとうございます。
はい。同一人物です^^;

qa2973.htmにあるようにしてENTERキーでTABの制御はできたのですが、
フォーカスがボタンにあたっている時のみ
元もとのEnterキーと同じ動作にするために
フォーカスがあたっている部品の名前を取得できないかと思いまして。

var e = window.event;
if(フォーカスのあたっている部品の名前 == ボタン){
  e.keyCode = 13;
}else{
  e.keyCode = 9;
}

みたいなロジックになるのかなと思っているのですが、
「フォーカスのあたっている部品の名前」の取り方が
解らなくなってしまいました。

引き続きアドバイスがありましたら、お願い致します。


4:[関連] 下級天使 [2002/07/30 19:47 ]

http://member.nifty.ne.jp/vjroom/java/jscript.htm

上記ページ内の

ドキュメントオブジェクト(window. document)
document.activeElement 現在フォーカスが当たっているエレメントを返す。
というのは、どうなんでしょうか?


5:[完了] ぱんだ [2002/07/30 20:52 ]

下級天使さん。ありがとうございました!!
まさしくこのメソッドを探していました!!

早速教えていただいたページをお気に入りに入れ
勉強したいと思います。

ありがとうございました。


6:[関連] ぱんだ [2002/07/30 21:12 ]

以下のような方法でもできました。
ご報告まで

function pushEnter(name,next_obj) {
   var e = window.event;
  if(フォーム名 == "ボタン"){
    return;
  }else{
    //Enterキーイベントだったら
    if( e.keyCode == 13 ){
      //Tabキーイベントへ変換
          e.keyCode = 9;
      //次の部品へフォーカスを移す
      target_obj = eval("document.form." + next_obj);
      target_obj.focus();
    }
  }
}

として、
<input type="text" name="txt1" onKeyPress="pushEnter(name,txt2)">
<input type="text" name="txt2" onKeyPress="pushEnter(name,btn)">
<input type="button" name="btn" onKeyPress="pushEnter(name,txt1)">

上記のようにすると、テキストフィールド上のフォーカスは、
Enterキーにより次の部品に移ります。
ボタン上のフォーカスは、Enterキーにより押下することができます。
でもやっぱり、document.activeElementを用いたほうが、全然楽ですね!


7:[関連] 下級天使 [2002/07/31 10:51 ]

余談ですが。

> onKeyPress="pushEnter(name,txt1)">
                      ^^^^^
nameで判定するより、
typeを渡し、input typeのタイプで、部品の判定はどうでしょうか?

以下のように。

function pushEnter(type,next_obj) {
  if ( type == "button" ) {
     // 押下された部品は、ボタンです。
  }
}

<input type="button" name="btn" onKeyPress="pushEnter(type,txt1)">

それでは。


8:[関連] ぱんだ [2002/08/01 13:41 ]

ぱんだです。

確かにTYPEを渡したほうが、汎用的ですね!
私の場合、ボタンのNameはすべて「btn」という接頭句
をつけていますので、Nameにしてしまいました。

TYPEをBUTTON限定にしてしまうと、
RESETがでてくると困ってしまったからなのですが^^;


9:[質問] かい [2002/08/07 15:20 ]

かいです。
ちょっと、便乗で質問させてください。

>function pushEnter(name,next_obj) {
>  var e = window.event;
>  if(フォーム名 == "ボタン"){
>    return;
>  }else{
>    //Enterキーイベントだったら
>    if( e.keyCode == 13 ){
>      //Tabキーイベントへ変換
>      e.keyCode = 9;
>      //次の部品へフォーカスを移す
>      target_obj = eval("document.form." + next_obj);
>      target_obj.focus();
>    }
>  }
>}
>として、
><input type="text" name="txt1" onKeyPress="pushEnter(name,txt2)">
><input type="text" name="txt2" onKeyPress="pushEnter(name,btn)">
><input type="button" name="btn" onKeyPress="pushEnter(name,txt1)">
>
>上記のようにすると、テキストフィールド上のフォーカスは、
>Enterキーにより次の部品に移ります。

上記のことを、NNやMozillaでも実現したいと思っています。
現在、キーイベントを取得し、リターンコードの判定までは
実現できているのですが、その先の"Tabキーイベントへ変換"の
方法がよく分かりません。方法をご存知の方いらしたら、教えていだかけませんか。
よろしくお願い致します。


10:[回答] ぱんだ [2002/08/07 21:03 ]

書籍によると、
windows+NNではtabキーのkeyCodeは取得できなさそうです。

参考書籍:
 改定第2版 JabaScript ポケットリファレンス 古籏一浩著

Mozillaはよくわかりません。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World