frequent
frequent

Reputation: 28533

how to use Jquery :focus selector on input elements in iOS?

I'm using Jquery 1.7.1 and iPad1 iOS3.

I need to fire a function on scrollstart unless an input element has focus. The function below worked for a long time, but all of a sudden it doesn't (looking aroud I guess because of switching to Jquery 1.7.1)

$(document).on('scroll', function(){
   if ( !$("input:focus").length > 0 ) {  
       self.hideAllPanels();
       }
  });

Specifically $('input:focus').length = 0, although I can detect the focus event triggering before the scroll event.

I have been fiddling with a workaround using:

 if ( !$(document.activeElement).get(0).tagName == "input" ){
 ....
 }

But I'm not sure when the activeElement is changing, because it seems to persist for quite a while even after I'm "leaving" the resprective element.

Question:
Any idea why I can't detect the focus-ed element on iOS? Some hints how I could set this up with activeElement, so on blur, I'm no longer having the input as activeElement are also welcome!

Thanks for help!

Upvotes: 1

Views: 1419

Answers (1)

adeneo
adeneo

Reputation: 318352

$(document).on('scroll', function(){
   if (!$("input").is(':focus')) {  
       self.hideAllPanels();
   }
});

This seems to work for me, but it will fire the function multiple times during scroll if an input element does not have focus.

Upvotes: 2

Related Questions