Вот решение для текста/пароля/текстового поля (не уверен, если я забыл другие, которые могут получить фокус, но они могут быть легко добавлены, изменив если положений ... улучшение может быть сделано на дизайне, поместив тело if в его собственную функцию, чтобы определить подходящие входы, которые могут получить фокус).
Предполагая, что вы можете положиться на пользователя, пользующегося браузером, который не является доисторическим (http: //www.caniuse.ком/# Подвиг = набор данных):
<script>
//The selector to get the text/password/textarea input that has focus is: jQuery('[data-selected=true]')
jQuery(document).ready(function() {
jQuery('body').bind({'focusin': function(Event){
var Target = jQuery(Event.target);
if(Target.is(':text')||Target.is(':password')||Target.is('textarea'))
{
Target.attr('data-selected', 'true');
}
}, 'focusout': function(Event){
var Target = jQuery(Event.target);
if(Target.is(':text')||Target.is(':password')||Target.is('textarea'))
{
Target.attr('data-selected', 'false');
}
}});
});
</script>
Для доисторических браузеров, вы можете использовать уродливее:
<script>
//The selector to get the text/password/textarea input that has focus is: jQuery('[name='+jQuery('body').data('Selected_input')+']')
jQuery(document).ready(function() {
jQuery('body').bind({'focusin': function(Event){
var Target = jQuery(Event.target);
if(Target.is(':text')||Target.is(':password')||target.is('textarea'))
{
jQuery('body').data('Selected_input', Target.attr('name'));
}
}, 'focusout': function(Event){
var Target = jQuery(Event.target);
if(Target.is(':text')||Target.is(':password')||target.is('textarea'))
{
jQuery('body').data('Selected_input', null);
}
}});
});
</script>
`$ ('# some_id_here input [type = text]: focus')` будет работать для ввода текста. – 2009-12-09 18:04:49
Это не работает для меня - есть ли новый селектор «: focus»? – 2009-12-14 02:54:28
Я говорю о селекторе CSS, а не о селекторе jQuery. – 2009-12-14 05:13:34