Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 27 Julio 2020, 04:57 AM

Título: [Resuelto] [Pregunta]: Sacar foco a cualquier input
Publicado por: Leguim en 27 Julio 2020, 04:57 AM
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]
}
Título: Re: [Pregunta]: Sacar foco a cualquier input
Publicado por: [u]nsigned en 27 Julio 2020, 05:54 AM
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)
}


Título: Re: [Pregunta]: Sacar foco a cualquier input
Publicado por: Leguim en 27 Julio 2020, 07:07 AM
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í...
Título: Re: [Pregunta]: Sacar foco a cualquier input
Publicado por: MinusFour en 27 Julio 2020, 14:56 PM
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.
Título: Re: [Pregunta]: Sacar foco a cualquier input
Publicado por: EdePC en 27 Julio 2020, 16:38 PM
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