working not ejemplos ejemplo detectar javascript

javascript - not - onblur html5



document.getElementById(id).focus() no funciona para Firefox o Chrome (17)

¿Estás tratando de hacer referencia al elemento antes de que el DOM haya terminado de cargarse?

Su código debe ir en la carga del cuerpo (u otra función que se debe ejecutar cuando el DOM se haya cargado, como $(document).ready() en jQuery)

body.onload = function() { // your onchange event handler should be in here too var mnumber = document.getElementById(''mobileno'').value; if(mnumber.length >=10) { alert("Mobile Number Should be in 10 digits only"); document.getElementById(''mobileno'').value = ""; document.getElementById(''mobileno'').focus(); return false; } }

Cuando lo hago en el evento de cambio, va dentro de esa función su validación, pero el enfoque no se está llegando Estoy usando document.getElementById(''controlid'').focus();

Estoy usando Mozilla Firefox y Google Chrome, en ambos casos no funciona. No quiero ningún IE. ¿Puede alguien decirme cuál podría ser el motivo?

Gracias por adelantado

Aquí está el código:

var mnumber = document.getElementById(''mobileno'').value; if(mnumber.length >=10) { alert("Mobile Number Should be in 10 digits only"); document.getElementById(''mobileno'').value = ""; document.getElementById(''mobileno'').focus(); return false; }


2 cosas que mencionar si focus() no funciona:

  • use esta función después de agregar al padre
  • si se selecciona la consola, después de actualizar la página, el elemento no se enfocará, por lo tanto, seleccione (haga clic en) en la página web mientras prueba

De esta manera funciona tanto en Firefox como en Chrome sin setTimeOut() .


Agregue un control, donde desea establecer el foco y luego cambie su propiedad como se muestra a continuación

<asp:TextBox ID="txtDummy" runat="server" Text="" Width="2" ReadOnly="true" BorderStyle="None" BackColor="Transparent"></asp:TextBox>

En el código subyacente, simplemente llame de la siguiente manera txtDummy.Focus()

este método funciona en todos los navegadores.


Asegúrese de utilizar "id" y "getElementById" como se muestra aquí:

<FORM id="my_form" name="my_form" action=""> <INPUT TYPE="text" NAME="somefield" ID="somefield" onChange="document.getElementById(''my_form'').submit();"> </FORM>


Coloque esta fuente arriba de su modal:

<script> $(''body'').on(''shown.bs.modal'', ''#IdYourModal'', function () { document.getElementById(''mobileno'').focus(); }) </script>


El tiempo de espera sugerido anteriormente solucionó el problema en Chrome. No existe problema en IE8 o FF3. Gracias por la propina, como siempre. Mi código que para establecer el foco que funcionó es: window.setTimeout(function() { document.form1.password.focus(); },0);


Intenta usar un temporizador:

var mnumber = document.getElementById(''mobileno'').value; if (mnumber.length >=10) { alert("Mobile Number Should be in 10 digits only"); document.getElementById(''mobileno'').value = ""; window.setTimeout(function () { document.getElementById(''mobileno'').focus(); }, 0); return false; }

Se ejecutará un temporizador con un recuento de 0 cuando el hilo esté inactivo. Si eso no ayuda, pruebe el código (con el temporizador) en el evento onblur en su lugar.


Mi caso fue un poco diferente. Estaba intentando focus() una entrada desde una consola de desarrollador de navegador. Resulta que estaba interfiriendo con la entrada de alguna manera, y una vez que minimicé la consola todo funcionó como se esperaba . Entiendo que esta no es una solución programática, pero en caso de que alguien haya encontrado esto en un motor de búsqueda como yo, existe la posibilidad de que esta información pueda ayudar.


No todos los elementos son enfocables pero están predeterminados, hay un atributo tabindex para arreglar eso.

Cuando asigna tabindex = a un elemento:

Se vuelve enfocable. Un usuario puede usar la tecla tab para pasar del elemento con un tabindex positivo menor al siguiente. La excepción es un valor especial tabindex = "0" significa que el elemento siempre será el último. El tabindex = -1 significa que un elemento se puede enfocar, pero la tecla de tabulación siempre saltará. Solo el método focus () funcionará


Para volver a enfocarse en volver a escribir el cuadro de texto de la contraseña en javascript:

window.setTimeout(function() { document.forms["reg"]["retypepwd"].focus(); },0);

Aquí, reg es el nombre del formulario de registro.


Sé que puede tratarse de un caso de uso esotérico, pero me costó conseguir una entrada para enfocarme cuando uso el framework Angular 2. Llamar a focus () simplemente no funcionó, sin importar lo que hice.

Finalmente me di cuenta de que angular lo estaba suprimiendo porque no había establecido un [(ngModel)] en la entrada. Establecer uno lo resolvió. Espero que ayude a alguien.


Si tiene acceso a jQuery o Zepto.js, esto funciona

$(''#mobileno'').focus();


Sospecho que el motivo por el que esto funciona es que la representación del navegador se ejecuta en el mismo hilo que javascript, y setTimeout (function () {}, 0); pone en cola la función de javascript dentro de setTimeout para ejecutar cuando el navegador queda inactivo. Si alguien tiene una explicación más detallada, por favor compártelo.

setTimeout(function(){ if(document.getElementById(''mobileno'')){ document.getElementById(''mobileno'').focus(); } },0);


También te recomiendo la función focus () de jQuery. Tu vida será más simple :) Hace un tiempo tuve un problema con el enfoque (sin jQuery) y me di por vencido.


Tu enfoque está funcionando antes de devolver falso; , Después de eso no está funcionando. Intenta esta solución. Control después de devolver falso;

Ponga el código en la función:

function validateNumber(){ var mnumber = document.getElementById(''mobileno'').value; if(mnumber.length >=10) { alert("Mobile Number Should be in 10 digits only"); document.getElementById(''mobileno'').value = ""; return false; }else{ return true; } }

Función de llamada:

function submitButton(){ if(!validateNumber()){ document.getElementById(''mobileno'').focus(); return false; } }

HTML:

Input:<input type="text" id="mobileno"> <button onclick="submitButton();" >Submit</button>


Una cosa más para agregar a esta lista para verificar:

Asegúrese de que el elemento que intenta enfocar no sea él mismo ni esté contenido en un elemento con "display: none" en el momento en que intenta enfocarlo.


window.setTimeout(function () { document.getElementById(''mobileno'').focus(); }, 0);

Esto funcionó para mí también. Firefox establecería el valor de mi elemento, pero no le daría un enfoque.