[Resuelto] [Pregunta]: Sacar foco a cualquier input

Iniciado por Leguim, 27 Julio 2020, 04:57 AM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

Quisiera por medio de javascript sacarle el foco a cualquier input si lo tuviera...

Código (javascript) [Seleccionar]

if(¿El foco está dentro de un input?)
{
     [Eliminar/Sacar foco del input]
}

[u]nsigned

#1
Se hace invocando al método blur de dicho input:

Código (html4strict) [Seleccionar]
<input id="campo" value="perdere el focus a los 2 segundos" onfocus="func()"/>

Código (javascript,3) [Seleccionar]
function func(){
 setTimeout( function() {
            document.getElementById('campo').blur()
       }, 2000)
}



No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

Leguim

Imagino que es mejor usar jquery
pero me refiero a que yo de entrada no se que elemento input tiene foco, simplemente se que el mouse o el cursor está presionado en un input y que se tiene que quitar dicho foco de x input... ¿como lo haría?

creo que como dije antes, con algo de jquery y usar e.blur(); o algo así...

MinusFour

#3
Esta pregunta es muy vieja, estoy seguro que lo pudiste haber encontrado en google en 2 mins...

Código (javascript) [Seleccionar]

$('input:focus').blur();


Ojo, no lo vayas a poner en un botón.

EdePC

Es raro que no sepas a que input aplicarle el evento ... por lo general esto se hace directamente en el mismo input:

Código (javascript) [Seleccionar]
<input type="text" class="nofocus" onclick="this.blur()">

- Así es menos costoso, y sirve para inputs específicos. Pero si no sabes a que input, puedes pulir la idea de MinusFour considerando que (al menos a mi entender) para darle eventos a un objeto que aún no existe como es el caso de un input:focus, hay que Bind-ear el evento. Además también puedes afinar tu tipo de input así (en este caso type=text):

jQuery:

Código (javascript) [Seleccionar]
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>

<input type="text">
<input type="password">
<input type="button" value="Enviar">

<script>
  $('input[type=text]').bind('focus', function(){
    $(this).blur()
  })
</script>


Si tus input ya están creados bastaría con:

Código (javascript) [Seleccionar]
  $('input[type=text]').focus(function(){
    $(this).blur()
  })


javascript puro y duro:

Código (javascript) [Seleccionar]
  document.querySelector('input[type=text]').onfocus = function(){
    event.target.blur()
  }


- Recuerda que si vas a encadenar funciones a un solo tipo de evento tienes que usar addEventListener