Test Foro de elhacker.net SMF 2.1

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 (javascript) [Seleccionar]
$(document).ready(function() {
$('#campo1').attr('value', '');
                $('#campo2').attr('value', '');
                //...
} );


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 (javascript) [Seleccionar]
$(":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 (javascript) [Seleccionar]

$(document).ready(function() {
     $(":hidden").each(function(){ $($(this)).val(''); });
} );


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 (javascript) [Seleccionar]
$(':text,:hidden').val('');

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

Código (javascript) [Seleccionar]
$(function(){
  console.time('tiempo');
  $(':text,:hidden').val('');
  console.timeEnd('tiempo');
});


VS


Código (javascript) [Seleccionar]
$(function(){
  console.time('tiempo');
  limpiar();
  console.timeEnd('tiempo');
});

var limpiar = function(){
  var elementos = document.getElementsByTagName('input');
  for(var i=0; i<elementos.length; ++i){
     var attr = elementos[i].getAttribute('type');
     if(attr==='text'||attr==='hidden'){
        elementos[i].value = '';
        continue;
     } else {continue; }
  }
};


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.