2013-04-16 3 views
9

Как сохранить фокус на одном текстовом поле? даже если вы щелкните в любом месте браузера.Как предотвратить элемент от потери фокуса?

$("#txtSearch").focus(); 
+6

Я предполагаю, что много кофе не приемлемый ответ? Вы собираетесь заставить пользователя нажать Enter, чтобы отправить форму? – lucuma

+0

Нет, он прикоснется к ней, потому что я использую планшет –

ответ

3
$("html").click(function(){ 
    $("#txtSearch").focus(); 
}); 

Демо:http://jsfiddle.net/QhaLY/

+0

* Технически * все еще можно ввести '# txtSearch2', если вы очень быстро. – h2ooooooo

+1

@ h2ooooooo: Или, если вы нажмете 'tab' –

+1

@ h2ooooooo Я согласен с Дэвидом. Мой ответ предотвращает щелчок в другом месте, но он не препятствует табуляции. Ответ Константина - лучшее решение. – Curt

1
$('body').click(function(){$("#txtSearch").focus();}); 
+0

Он отлично работает благодаря мужчине, высоко ценится –

18

Вы должны подписаться на blur случае textbox и восстановить фокус с небольшой тайм-аут:

$('#txtSearch').blur(function (event) { 
    setTimeout(function() { $("#txtSearch").focus(); }, 20); 
}); 

Таким образом, вы не полагаетесь на подписку на события любого другого элемента на странице. Если вы подписаны на body click или html click, он не будет работать, если какой-либо другой элемент предотвратит распространение его события click, также он не будет работать, если табуляция из textbox.

Пример:

<!-- I will not propagate my click to top level DOM elements --> 
<button id="button">Click me</button> 

<script> 
$('#button').click(function (event) { 
    event.stopPropagation(); 
}); 
</script> 
+0

+1 Это единственный ответ, который до сих пор обрабатывает события, такие как табуляция из фокуса. –

+0

Blur - это событие, которое срабатывает, когда фокус был потерян на элементе. – lucuma

+1

@Curt. Я включил некоторое объяснение, почему не обрабатывать щелчок. –

0

Есть другие способы потери фокуса, чем нажав область от входа т.е. табуляции. Если вы хотите, чтобы предотвратить потери фокуса использование размытия события т.е.

document.getElementById('txtSearch').addEventListener('blur', e => { 
 
    e.target.focus(); 
 
});

Смежные вопросы