Ответ 1
Действительно, лучший способ сделать это - настроить обработчик для события onFocus, а затем установить переменную в идентификатор элемента с фокусом.
что-то вроде этого:
var id;
$(":input").focus(function () {
id = this.id;
});
Как вы можете выбрать элемент с текущим фокусом?
В jQuery нет фильтра :focus
, поэтому мы можем использовать что-то вроде этого:
$('input:focus').someFunction();
Действительно, лучший способ сделать это - настроить обработчик для события onFocus, а затем установить переменную в идентификатор элемента с фокусом.
что-то вроде этого:
var id;
$(":input").focus(function () {
id = this.id;
});
$(document.activeElement)
вернет текущий сфокусированный элемент и будет быстрее, чем использование псевдоселектора: focus.
Источник: http://api.jquery.com/focus-selector/
alert($("*:focus").attr("id"));
Я использую jQuery.
Он будет предупреждать, что идентификатор элемента фокусируется.
Я надеюсь, что это будет полезно для вас.
Вы пробовали
$.extend($.expr[':'], {
focused: function(elem) { return elem.hasFocus; }
});
alert($('input :focused').length);
Если вы используете JQuery, вы можете записать селектор следующим образом:
$.expr[':'].focus = function(a){ return (a == document.activeElement); }
Затем вы можете выбрать элемент, сфокусированный в данный момент: $(":focus")
Не только элементы управления формой могут иметь фокус. Любой элемент html с tabindex можно сфокусировать в современных браузерах.
Поднят из примеров текущей версии jQuery (1.7) docs:
$(elem).is(":focus");
Для элемента с контролем есть фокус или нет.
if ($("...").is(":focus")) {
...
}
Вот его версия CoffeeScript. На основе кода jmanrubia:
$.expr[':'].focus = (a) ->
a is document.activeElement
Вы также назовете это так $(".:focus")