Foros del Web » Programando para Internet » Javascript »

Limpiar formulario

Estas en el tema de Limpiar formulario en el foro de Javascript en Foros del Web. ¡Buenas! Les comento, recién estoy empezando con Javascript y este es mi primer script {también mi primer post}. Ahora bien, funciona perfectamente, pero me parece ...
  #1 (permalink)  
Antiguo 23/01/2010, 16:28
 
Fecha de Ingreso: enero-2010
Ubicación: Córdoba
Mensajes: 21
Antigüedad: 14 años, 11 meses
Puntos: 1
Información Limpiar formulario


¡Buenas! Les comento, recién estoy empezando con Javascript y este es mi primer script {también mi primer post}. Ahora bien, funciona perfectamente, pero me parece que es demasiado código para algo tan simple {siendo que a modo de prueba sólo existen dos <input>}, así que quería saber si hay forma de mejorar este código, haciéndolo más conciso y reutilizable, así puedo ir mejorando en la forma de programar...

Desde ya muchas gracias.

Código HTML:
Ver original
  1.  <input type="text" name="inputName" id="inputName" value="" />
  2.  <input type="text" name="inputEmail" id="inputEmail" value="" />
  3. </form>

Código Javascript:
Ver original
  1. window.onload = function() {
  2.        
  3.  var valueName = "Nombre";
  4.  var valueEmail = "Email";
  5.            
  6.  var inputName = document.getElementById("inputName");
  7.  var inputEmail = document.getElementById("inputEmail");
  8.            
  9.  inputName.value = valueName;
  10.  inputEmail.value = valueEmail;
  11.            
  12.  function eraseValue() {
  13.   if(this.value == valueName || this.value == valueEmail) {
  14.    this.value = "";
  15.   }
  16.  }
  17.            
  18.  function restoreValue() {
  19.   if(inputName.value == "") {
  20.    this.value = valueName;
  21.   } else if(inputEmail.value == "") {
  22.    this.value = valueEmail;
  23.   }
  24.  }
  25.            
  26.  inputName.onfocus = eraseValue;
  27.  inputEmail.onfocus = eraseValue;
  28.            
  29.  inputName.onblur = restoreValue;
  30.  inputEmail.onblur = restoreValue;
  31.        
  32. }
  #2 (permalink)  
Antiguo 23/01/2010, 17:40
 
Fecha de Ingreso: diciembre-2008
Mensajes: 100
Antigüedad: 16 años
Puntos: 0
Respuesta: Limpiar formulario

Hola!!!

Usa una función más general para acceder a través del DOM.

Por ejemplo, yo usaría document.getElementsByName para acceder a todos los objetos del formulario. Creo que IE6 no implementaba correctamente del todo la función getElementsByName... aunque creo que sí que la tiene en cuenta para los elementos de tipo input.

Nota: Echa un vistazo a la forma en la que puedes acceder a los nodos del DOM (pincha aquí).

Deberías poner el mismo atributo name para todos los elementos que quieras borrar o volver a restaurar el valor por defecto (por ejemplo "elemFormulario").

Así pues en la función eraseValue yo haría algo así:

Código Javascript:
Ver original
  1. var elems = document.getElementsByName("elemFormulario");
  2.  
  3. for (var i=0; i<elems.length; i++)
  4.     elems[i].value = "";

Y en la función restoreValue haría algo así:

Código Javascript:
Ver original
  1. var elems = document.getElementsByName("elemFormulario");
  2.  
  3. for (var i=0; i<elems.length; i++)
  4.    elems[i].value = valoresDefecto[i];

Y valoresDefecto sería un array global con los valores por defecto de los elementos del formulario en el mismo orden en que aparecen.

En este caso:
Código Javascript:
Ver original
  1. valoresDefecto[0] = "Nombre";
  2. valoresDefecto[1] = "Email";

Además podría hacer:

Código Javascript:
Ver original
  1. var elems = document.getElementsByName("elemFormulario");
  2.  
  3. for (var i=0; i<elems.length; i++)
  4. {
  5.      elems[i].onBlur = restoreValue;
  6.      elems[i].onFocus = eraseValue;
  7. }

Para asignar las funciones que asignas al final.

Espero que te haya sido de ayuda y haberme explicado bien. Saludos!!
  #3 (permalink)  
Antiguo 25/01/2010, 22:06
 
Fecha de Ingreso: enero-2010
Ubicación: Córdoba
Mensajes: 21
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Limpiar formulario

¡Gracias Pablitino! Así sin dudas es mucho más eficiente. Ya voy a publicar por aquí el código final así todos pueden usarlo.

¡Saludos!
  #4 (permalink)  
Antiguo 26/01/2010, 15:25
 
Fecha de Ingreso: diciembre-2008
Mensajes: 100
Antigüedad: 16 años
Puntos: 0
Respuesta: Limpiar formulario

Un placer ayudar, sí estaría bien que postearas el código por si le sirve a alguien.

Saludos!!

Etiquetas: limpiar, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:24.