ユーザーがテーブル内の入力ボックスを離れたときにアクションをトリガーする小さなjQueryを作成し、ユーザーが別のテーブルに移動したか、テーブルの外に移動したかを確認しようとしています。
私が抱えている問題は、焦点がどこにあるかをうまく特定することです。ここでは説明しませんが、このプロジェクトではjQuery 1.2.6を使用しているため、フォーカス識別セレクター(:focus)の一部が機能しません。
問題は、最も近い一致である$(document.activeElement)ですが、 <body>を現在のアクティブな要素として識別することが多いため、機能する場合があります。
また、blurイベントはfocusイベントの前に発生するように見えるので、そこで取得することはできません。
JS Fiddleで実用的な例を設定しました:http://jsfiddle.net/t3YgZ/6/
コードのベースは次のとおりです。
var currentRow = -1;
$(document).ready(function() {
var rows = $("table tr");
// Set ID for each row on init
rows.each(function(index) {
$(this).attr("id", index);
});
// Attach a handler to leaving each input box
rows.find("input").blur(function() {
var leavingRow = $(this).parents("tr:first").attr("id");
var newSelectedRow = $(document.activeElement).parents("tr:first").attr("id");
if (newSelectedRow != null && leavingRow != newSelectedRow) {
alert("row changed");
}
});
});
jQuery 1.2.6で現在のフォーカス要素を特定するにはどうすればよいですか?