Home > Web Front-end > CSS Tutorial > How to Reliably Set Focus on Input Elements in Different Browsers?

How to Reliably Set Focus on Input Elements in Different Browsers?

DDD
Release: 2024-11-01 07:00:30
Original
314 people have browsed it

How to Reliably Set Focus on Input Elements in Different Browsers?

IE and Focus Event Troubles

The focus() event can be unreliable in Internet Explorer. When attempting to set the cursor focus on an input element using the following function:

function change() {
  var input = document.getElementById('pas');
  var input2 = input.cloneNode(false);
  input2.type = 'password';
  input.parentNode.replaceChild(input2, input);
  input2.focus();
}
Copy after login

IE7 will not respond to the focus() call, leaving the cursor outside of the input element. To rectify this issue in IE, employ a setTimeout function:

setTimeout(function() { document.getElementById('myInput').focus(); }, 10);
Copy after login

Opera Woes

However, using this solution introduces a new predicament in Opera. To address this, consult resources such as "How to set focus in required index on textbox for Opera."

Universal Solution

To ensure compatibility across all browsers, incorporate a code snippet that handles the scenario where the input element is not immediately available:

setTimeout(

  function( ) {

    var el = document.getElementById( "myInput" ) ;
    ( el != null ) ? el.focus( ) : setTimeout( arguments.callee , 10 ) ;

  }

, 10 ) ;
Copy after login

This snippet retrys focus every 10 milliseconds until the element becomes available, resolving the issue for both slow-loading pages and delayed element availability.

The above is the detailed content of How to Reliably Set Focus on Input Elements in Different Browsers?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template