Foros del Web » Programando para Internet » Javascript »

Borrar datos de Form

Estas en el tema de Borrar datos de Form en el foro de Javascript en Foros del Web. Hola, tengo el siguiente formulario (adjunto código abajo), al cual le valido mediante javascript que sea un número. Si no es un número da un ...
  #1 (permalink)  
Antiguo 23/05/2012, 05:00
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años, 1 mes
Puntos: 4
Borrar datos de Form

Hola, tengo el siguiente formulario (adjunto código abajo), al cual le valido mediante javascript que sea un número. Si no es un número da un error. Hasta ahí todo OK.

El problema, viene en que si metes caracteres que no son un número, te salta el error, pero el formulario tira hacia delante..

Me gustaría que si meten datos que no son numéricos me diese el error, y a continuación me dejase el Focus en el mismo campo, y me limpiase los datos de ese campo, es decir, me lo dejase vacío de nuevo.

Pero nose como hacerlo, si me podéis echar una mano...

Formulario:
Código:
<fieldset>
<legend>* Cuestionario *</legend>
<br>
<ul>
<li>
» Numero de Pregunta: <input type="number" size="50" min="1" max="90" name="pregunta" id="pregunta" placeholder="Introduce el número de la pregunta" onChange="validarSiNumero(this.value);" required/> <br> <br>
</li>
</ul>

</fieldset>
validacion:
Código:
<script>
function validarSiNumero(numero){
if (!/^([0-9])*$/.test(numero))
alert("El valor '" + numero + "' no es un número");
}
</script>

Un saludo, y desde ya muchas gracias.
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)
  #2 (permalink)  
Antiguo 23/05/2012, 07:18
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 2 meses
Puntos: 47
Respuesta: Borrar datos de Form

Código Javascript:
Ver original
  1. function validarSiNumero(numero){
  2. if (!/^([0-9])*$/.test(numero))
  3. document.nombreFormulario.pregunta.focus();
  4. document.nombreFormulario.pregunta.value = 0;
  5. alert("El valor '" + numero + "' no es un número");
  6. }

En nombreFormulario reemplaza por el attributo name de tu formulario.
Como ves le asigno document.ElNombreDelFormulario.AttributoNameDelInp ut

tambien se podria hacer por id y quedaria asi:

Código Javascript:
Ver original
  1. function validarSiNumero(numero){
  2. if (!/^([0-9])*$/.test(numero))
  3. document.getElementById("pregunta").focus();
  4. document.getElementById("pregunta").value = 0;
  5. alert("El valor '" + numero + "' no es un número");
  6. }

Saludos
  #3 (permalink)  
Antiguo 24/05/2012, 00:31
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Borrar datos de Form

Muchas gracias Djaevi, aunque no me funciona del todo, pero me resulta suficiente.

Te explico, no me funciona del todo porque no me devuelve el focus a ese campo, pero con que me vacie el campo me resulta suficiente, porque como es un campo requerido si no esta relleno o no tiene los datos correctos ya no puede enviar el formulario :)

El gran problema es que añadiendo las líneas

Código:
document.formulario.pregunta.focus();
document.formulario.pregunta.value = "";
La validación ya no la realiza, da igual que le metas la cadena 'asdjnas' o '1233' que borra los datos.
He probado y borrando esas 2 lineas funciona bien.. :S
No entiendo porque pasa esto, si no tiene nada que ver, no?
El caso es que si metes numeros no salta el alert pero si vacia el contenido del input :S



Pero ahora necesito que esto se lo pueda aplicar a varios campos, porque son 4 campos los que quiero validar si son numéricos o no (siempre los mismos, pero estos 4).


Espero que puedan ayudarme, un saludo y muchas gracias!
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)

Última edición por oNefl0w189; 24/05/2012 a las 00:42
  #4 (permalink)  
Antiguo 24/05/2012, 03:03
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Borrar datos de Form

Tendrías que hacerlo asi

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5. <title>validar entero</title>
  6. <script type="text/javascript">
  7. //<![CDATA[
  8. function validar(campo){
  9. var elcampo = document.getElementById(campo);  
  10. if((!validarEntero(elcampo.value))||(elcampo.value == "")){
  11. elcampo.value = "";
  12. elcampo.focus();
  13. alert('Debe ingresar un número');
  14. }
  15. }
  16.  
  17. function validarEntero(input){
  18. return !isNaN(input)&&parseInt(input)==input;
  19. }
  20. //]]>
  21. </head>
  22. <form action="#">
  23. <input type="text" id="pregunta" name="pregunta" value="" onkeyup="validar(this.id);" />
  24. <input type="text" id="pregunta2" name="pregunta2" value="" onkeyup="validar(this.id);" />
  25. <input type="submit" value="procesar" />
  26. </form>
  27. </body>
  28. </html>

Además, posteriormente tendrías que crear otra función para validar el envío de todo el form si es que estás haciendo un submit. La alternativa es hacer una validacion con onsubmit, pero en ese caso el usuario no vería las alertas a medida que completa los campos, sino que advertiría los errores al presionar el boton procesar.
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 25/05/2012, 01:58
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Borrar datos de Form

Muchas gracias @emprear ahora sí! jeje.

No me devuelve el focus al campo tampoco, nose porque nunca he conseguido que devuelva el focus :S, pero bueno, eso no tiene importancia mientras borre los datos, jeje.

Aunque he modificado el onkeyup por un onChange.

código final:

validador:
Código:
function validar(campo){ 
var elcampo = document.getElementById(campo);   
if((!validarEntero(elcampo.value))||(elcampo.value == "")){
elcampo.value = "";
elcampo.focus();
}
}
 
function validarEntero(input){
return !isNaN(input)&&parseInt(input)==input;
}

implementacion:
Código:
Numero de Pregunta: <input type="number" size="50" min="1" max="90" 
name="pregunta" id="pregunta" placeholder="Introduce el número de la pregunta" 
onChange="validar(this.id);" required/>
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)
  #6 (permalink)  
Antiguo 25/05/2012, 02:18
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Borrar datos de Form

Con keyup funciona bien, además cuando haces ese tipo de validaciones contra el uso del teclado, hay que evitar los alert(), porque suelen generar problemas.
Lo más apropiado sería algo asi

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5. <title>validar entero</title>
  6. <script type="text/javascript">
  7. //<![CDATA[
  8. function validar(campo){
  9. var elcampo = document.getElementById(campo);  
  10. if((!validarEntero(elcampo.value))||(elcampo.value == "")){
  11. elcampo.value = "";
  12. elcampo.focus();
  13. //alert('Debe ingresar un número');
  14. document.getElementById('mensaje').innerHTML = 'Debe ingresar un número';
  15. }else{
  16. document.getElementById('mensaje').innerHTML = '';
  17. }
  18. }
  19.  
  20. function validarEntero(input){
  21. return !isNaN(input)&&parseInt(input)==input;
  22. }
  23. //]]>
  24. </head>
  25. <form action="#">
  26. <input type="text" id="pregunta" name="pregunta" value="" onkeyup="validar(this.id);" /><br />
  27. <input type="text" id="pregunta2" name="pregunta2" value="" onkeyup="validar(this.id);" /><br /><br />
  28. <input type="submit" value="procesar" /><br /><br />
  29. </form>
  30. <div id="mensaje"></div>
  31. </body>
  32. </html>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 25/05/2012, 06:50
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Borrar datos de Form

Ya he evitado los alert, les tenía puestos simplemente para comprobar su funcionamiento.

La cosa es que me borre el contenido del campo para que no puedan enviar el formulario y ya esta, jeje.


Ahora me he dado cuenta de que no pueden introducir el 0 (pues la pregunta 0 no existe) ni más del 90 (pues solo hay 90 preguntas).

He dejado la funcion así:

Código Javascript:
Ver original
  1. function validar(campo){
  2. var elcampo = document.getElementById(campo);  
  3. if((!validarEntero(elcampo.value))||(elcampo.value == "")||(elcampo.value <= 0)
  4. ||(elcampo.value >= 100)||(elcampo = "pregunta" && elcampo.value >= 90)){
  5. elcampo.value = "";
  6. elcampo.focus();
  7. }
  8. }
  9.  
  10. function validarEntero(input){
  11. return !isNaN(input)&&parseInt(input)==input;
  12. }


La cosa es que en los campos de valoracion pueden meter numeros de 1 a 100. (no vale 0 ni mas de 100).
Pero sin embargo en el campo numero de pregunta, solo tienen que poder meter del 1 al 90 (ni 0 ni mas de 90).

Me funciona que no puedan meter el 0, pero no me funciona que SOLAMENTE en el campo numero pregunta no pueda meter mas de 90.


Si me podéis echar una mano.. es urgente!


Muchisimas Gracias.
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)
  #8 (permalink)  
Antiguo 27/05/2012, 14:16
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Borrar datos de Form

Alguien puede ayudarme? xD

Gracias.
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)
  #9 (permalink)  
Antiguo 27/05/2012, 15:26
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Borrar datos de Form

hacelo por separado

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  
  7. <script type="text/javascript">
  8. //<![CDATA[
  9. function verificar(){
  10. var p = document.getElementById('preg').value;
  11. var v = document.getElementById('valora').value;
  12. p= parseInt(p);
  13. v = parseInt(v);
  14.  
  15. if((v < 1)||(v > 100)){
  16. alert('error v');
  17. }
  18.  
  19. if(( p < 1)||(p > 90)){
  20. alert('error p');
  21. }
  22.  
  23. }
  24. //]]>
  25. </head>
  26. <form action="#">
  27. pregunta: <input type="text" value="" id="preg" name="preg" /><br />
  28. valorar: <input type="text" value="" id="valora" name="valora" /><br /><br />
  29. <input type="button" value="verifica" onclick="verificar();" />
  30. </form>
  31. </body>
  32. </html>

En tu condición,
elcampo = "pregunta" no es nada
El problema es que en tu ejemplo en ningún momento habías mencionado que hubiese dos tipos de campos, por eso integrarlos todo en una sola función se complica si no se sabe que es pregunta y que es valoración

Saludos

PD:
LAs urgencias se atienden en los hospitales, no en los foros
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #10 (permalink)  
Antiguo 28/05/2012, 01:14
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Borrar datos de Form

Muchas gracias @Emprear.

Solo necesitaba un poquito de luz para poder seguir adelante en el camino XD

Mi código finalmente ha quedado así:

Código Javascript:
Ver original
  1. //  Validacion Numérica
  2.  
  3. function validarEntero(input){
  4. return !isNaN(input)&&parseInt(input)==input;
  5. }
  6.  
  7.  
  8. //Campos valoración
  9.  
  10. function validar(campo){
  11. var valoracion = document.getElementById(campo);  
  12. if((!validarEntero(valoracion.value))||(valoracion.value == "")||(valoracion.value <= 0)||(valoracion.value > 100)){
  13. valoracion.value = "";
  14. valoracion.focus();
  15. }
  16. }
  17.  
  18.  
  19. //Campo pregunta
  20.  
  21. function verificar(campo){
  22. var pregunta = document.getElementById(campo);
  23.  
  24.  
  25. if((!validarEntero(pregunta.value))||(pregunta.value == "")||(pregunta.value < 1)||(pregunta.value > 90)){
  26. pregunta.value = "";
  27. pregunta.focus();
  28. }
  29.  
  30. }

El campo 'pregunta' era uno simplemente, sin embargo los campos 'valoracion' son 3. y con distintas reglas de validación, aunque algunas comunes en los dos, por eso intenté hacerlo en la misma validación.

Un saludo y muchas gracias, espero que os sirva a vosotros también.

PD: Lo siento por el Up, pero veía como el post se quedaba cada vez más atrás y el tema era urgentillo.. (y casualmente es para un tema de un hospital XD).
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)

Etiquetas: formulario, input
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 03:34.