Limpiar Inputs al refrescar pantalla [F1]

Iniciado por Maurice_Lupin, 11 Marzo 2014, 15:58 PM

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

Maurice_Lupin

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.
Un error se comete al equivocarse.

Shell Root

Código (javascript) [Seleccionar]
$(":text").each(function(){ $($(this)).val(''); });
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Maurice_Lupin

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.
Un error se comete al equivocarse.

#!drvy

#3
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

Maurice_Lupin

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.
Un error se comete al equivocarse.