Як користуватися jQuery, як я можу отримати елемент введення, у якому фокус каретки (курсора)?
Або іншими словами, як визначити, чи вхід має фокус карети?
Як користуватися jQuery, як я можу отримати елемент введення, у якому фокус каретки (курсора)?
Або іншими словами, як визначити, чи вхід має фокус карети?
Відповіді:
// Get the focused element:
var $focused = $(':focus');
// No jQuery:
var focused = document.activeElement;
// Does the element have focus:
var hasFocus = $('foo').is(':focus');
// No jQuery:
elem === elem.ownerDocument.activeElement;
Який з них слід використовувати? цитуючи документи jQuery :
Як і для інших селекторів псевдокласу (тих, що починаються з ":"), рекомендується передувати: фокусування з ім'ям тегу чи іншим селектором; інакше мається на увазі універсальний селектор ("*"). Іншими словами, оголене
$(':focus')
рівнозначне$('*:focus')
. Якщо ви шукаєте елемент, орієнтований на даний момент, $ (document.activeElement) отримає його без пошуку всього дерева DOM.
Відповідь:
document.activeElement
І якщо ви хочете, щоб об'єкт jQuery обгортав елемент:
$(document.activeElement)
$focused
, так як я припускаю, що ви робите це для позначення var - об'єкт jquery. TYVM.
$( document.activeElement )
Вилучить його без необхідності пошуку всього дерева DOM, як рекомендовано в документації на jQuery
Я перевірив два способи в Firefox, Chrome, IE9 та Safari.
(1). $(document.activeElement)
працює як очікується у Firefox, Chrome та Safari.
(2). $(':focus')
працює як очікується у Firefox та Safari.
Я перейшов до миші, щоб ввести «ім’я», і натиснув клавішу Enter на клавіатурі, потім я спробував отримати сфокусований елемент.
(1). $(document.activeElement)
повертає введення: text: ім'я, як очікувалося в Firefox, Chrome та Safari, але воно повертає введення: submit: addPassword в IE9
(2). $(':focus')
повертає введення: text: ім'я, як очікувалося в Firefox та Safari, але нічого в IE
<form action="">
<div id="block-1" class="border">
<h4>block-1</h4>
<input type="text" value="enter name here" name="name"/>
<input type="button" value="Add name" name="addName"/>
</div>
<div id="block-2" class="border">
<h4>block-2</h4>
<input type="text" value="enter password here" name="password"/>
<input type="submit" value="Add password" name="addPassword"/>
</div>
</form>
Спробуйте це:
$(":focus").each(function() {
alert("Focused Elem_id = "+ this.id );
});
.each
невідповідання)
Як це ніхто не згадав ..
document.activeElement.id
Я використовую IE8, і не перевіряв його в жодному іншому браузері. У моєму випадку я використовую його, щоб переконатися, що поле є мінімум 4 символами та зосереджене перед тим, як діяти. Після введення 4-го числа він спрацьовує. Поле має ідентифікатор 'рік'. Я використовую..
if( $('#year').val().length >= 4 && document.activeElement.id == "year" ) {
// action here
}
$(':focus')[0]
дасть вам фактичний елемент.
$(':focus')
дасть вам масив елементів, як правило, одночасно зосереджений лише один елемент, тому це краще, лише якщо ви якось зосереджені на декількох елементах.
Спробуйте це::
$(document).on("click",function(){
alert(event.target);
});
Якщо ви хочете підтвердити, чи фокус знаходиться з елементом, тоді
if ($('#inputId').is(':focus')) {
//your code
}