Foro de elhacker.net

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
  1. if(¿El foco está dentro de un input?)
  2. {
  3.      [Eliminar/Sacar foco del input]
  4. }
  5.  


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
  1. <input id="campo" value="perdere el focus a los 2 segundos" onfocus="func()"/>
  2.  
Código
  1. function func(){
  2.  setTimeout( function() {
  3.             document.getElementById('campo').blur()
  4.        }, 2000)
  5. }



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
  1. $('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
  1. <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
  1. <script src="https://code.jquery.com/jquery-3.1.0.js"></script>
  2.  
  3. <input type="text">
  4. <input type="password">
  5. <input type="button" value="Enviar">
  6.  
  7. <script>
  8.  $('input[type=text]').bind('focus', function(){
  9.    $(this).blur()
  10.  })
  11. </script>

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

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

javascript puro y duro:

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

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