10

focusin 関数で以前にフォーカスされた項目を見つける必要があります。コード例を次に示します。

$('#id').on('focusin', function(event) {
  //console.log(event.relatedTarget.nodeName);    //doesn't work
}

私はいくつかの調査を行いましたが、これは mousedown などのマウスイベントでのみ機能すると投稿で言っている人を見たことがありますが、信頼できる情報源から、これが機能すると信じているいくつかの記事に出くわしました。

  1. https://developer.mozilla.org/en-US/docs/DOM/event.relatedTargetここで Firefoxは、「focusin」イベントで event.relatedTarget が「どの EventTarget がフォーカスを失っているか」を返す方法について 具体的に言及しています。Firefox は、私がこれに使用しているブラウザーです。

  2. http://www.w3.org/TR/DOM-Level-3-Events/#events-FocusEventこのブックマークで、すべての FocusEvent に関連ターゲットと呼ばれる読み取り専用属性があることがわかります。

  3. http://www.w3.org/TR/DOM-Level-3-Events/#event-type-focusInここでは、「FocusEvent」に「relatedTarget」というプロパティがあることも具体的に述べています。フォーカス(もしあれば)。」

それで、私はここで何が間違っているのですか?それはある種のばかげた構文ミスか何かに違いありません。event.relatedTarget の nodeName が見つかりません。

更新: IE を使用して動作させることができますが、これは Firefox では動作しませんか???

 $("#id").on('focusin', function(event) {
   $('#textbox').text(event.relatedTarget.nodeName);
 }
4

1 に答える 1

9

focusinMDNは/イベントのrelatedTargetについて言及していfocusoutますが、残念ながら、FireFoxのどのバージョンも実際にはこれら2つのイベントをサポートしていません。jQueryは単にそれらをエミュレートしますが、ネイティブサポートがないため、FFでrelatedTargetを取得しません。

ここまたはここで互換性情報を参照してください。

于 2013-02-25T11:48:51.020 に答える