Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Maurice_Lupin en 11 Marzo 2014, 15:58 pm



Título: Limpiar Inputs al refrescar pantalla [F1]
Publicado por: Maurice_Lupin en 11 Marzo 2014, 15:58 pm
Hola, disculpen si la pregunta es tonta, tengo inputs que al refrescar la pantalla se quedan con el valor anterior que ingrese.

Estoy utilizando jquery, asi que se me ocurrio esto y funciona, pero me pregunto si hay alguna forma óptima, pues si tuviera muchos campos input limpiarlos manualmente no me convence.

Código
  1. $(document).ready(function() {
  2. $('#campo1').attr('value', '');
  3.                $('#campo2').attr('value', '');
  4.                //...
  5. } );

También podria hacer un bucle, pero no sé si es lo más eficiente.

Saludos.


Título: Re: Limpiar Inputs al refrescar pantalla [F1]
Publicado por: Shell Root en 11 Marzo 2014, 16:06 pm
Código
  1. $(":text").each(function(){ $($(this)).val(''); });


Título: Re: Limpiar Inputs al refrescar pantalla [F1]
Publicado por: Maurice_Lupin en 11 Marzo 2014, 17:07 pm
Gracias, @Unlock.

También me sirve pero campos ocultos
Código
  1. $(document).ready(function() {
  2.     $(":hidden").each(function(){ $($(this)).val(''); });
  3. } );
  4.  

Espero que sea lo más eficiente  ;D y que no haya alguna etiqueta que evite la caché.

Saludos.


Título: Re: Limpiar Inputs al refrescar pantalla [F1]
Publicado por: #!drvy en 11 Marzo 2014, 20:47 pm
También puedes utilizar simplemente:
Código
  1. $(':text,:hidden').val('');

Como soy un fan de la velocidad hize una prueba con puro javascript vs jquery :P

Código
  1. $(function(){
  2.   console.time('tiempo');
  3.   $(':text,:hidden').val('');
  4.   console.timeEnd('tiempo');
  5. });

VS


Código
  1. $(function(){
  2.   console.time('tiempo');
  3.   limpiar();
  4.   console.timeEnd('tiempo');
  5. });
  6.  
  7. var limpiar = function(){
  8.   var elementos = document.getElementsByTagName('input');
  9.   for(var i=0; i<elementos.length; ++i){
  10.      var attr = elementos[i].getAttribute('type');
  11.      if(attr==='text'||attr==='hidden'){
  12.         elementos[i].value = '';
  13.         continue;
  14.      } else {continue; }
  15.   }
  16. };

10 campos de texto + 5 de tipo hidden.

Metodo con jquery - tiempo: 9ms
Metodo con javascript puro - tiempo: 1ms

Y para hacer un poco de spam te dejo una entrada en mi blog que escribi hace tiempo.

“$.each” de jQuery vs “for” de javascript
http://www.drvydev.com/blog/each-de-jquery-vs-for-de-javascript-sorpresa/

Saludos


Título: Re: Limpiar Inputs al refrescar pantalla [F1]
Publicado por: Maurice_Lupin en 13 Marzo 2014, 17:34 pm
Gracias, #!drvy ahora trataré de usar más javascript puro cuando de bucles y limpiar inputs se trate  ;D. Me ahorro code con jquery pero a veces es preferible javascript puro.

Saludos.