Foros del Web » Programando para Internet » Javascript »

validar vacios en campos dinamicos

Estas en el tema de validar vacios en campos dinamicos en el foro de Javascript en Foros del Web. hola foro: Tengo un problema, tengo un formulario con 76 campos dinamicos, y al darle submit necesito que se valide que todos estan llenos, para ...
  #1 (permalink)  
Antiguo 06/12/2004, 12:25
Avatar de lorecasas  
Fecha de Ingreso: noviembre-2003
Mensajes: 126
Antigüedad: 20 años, 6 meses
Puntos: 0
validar vacios en campos dinamicos

hola foro:

Tengo un problema, tengo un formulario con 76 campos dinamicos, y al darle submit necesito que se valide que todos estan llenos, para esto hice esta funcion que llamo en el evento onSubmit de la forma:

function ValidarVacios()
{
var f = document.forms['form1'];
var text = "";
var alerta = false;
//numTexts es el numero de campos, ahora son 76 pero podria variar
for (var i = 0; i <= parseInt(f.numTexts.value); i++){
//los nombres de los campos comienzan con el prefijo 'txt' seguido del numero del campo
text = 'txt' + String(i);
if (('f.'+[text]+'.value') == ''){
alerta = true;
}
}
if (alerta==true)
{
alert('Campos Vacios');
return false;
}
else{
return true;
}
}

Lo que hace este script es que va recorriendo todos los campos y si alguno esta vacio cambia el estado de la variable alerta de false a true, de modo que si hay aunque sea un solo campo vacio, debe entrar y cambiar a true la variable alerta.

Cuando termina de recorrerlos hay un if preguntando si la variable alerta es true, entonces saca un mensaje alert diciendo que hay campos vacios, el problema es que al dar submit esta ignorando totalmente el scrip y checando vi que no entra al if que esta dentro del for, donde cambio el estado de la variable:

if (('f.'+[text]+'.value') == ''){
alerta = true;
}

ahora no se si estoy concatenando bien la variable con el restod e la sentencia o que estoy haciendo mal.

Alguien sabe alguna otra forma poara checar inputs text dinamicos?? y que el mensaje salga solo una vez ya sea que haya uno o mas inputs vacios???

Gracias!!!

Atte. Lorena
__________________
Lorena ;-)
  #2 (permalink)  
Antiguo 07/12/2004, 00:33
 
Fecha de Ingreso: agosto-2004
Mensajes: 157
Antigüedad: 19 años, 8 meses
Puntos: 5
Hola lorecasas

Son muchas campos para comprobar . Creo que seria buena idea marcar los campos obligatorios con un color. En el ejemplo que te envio he puesto los bordes de color rojo para los campos obligatorio, y los no obligatorios en negro.


<html>
<head>
<title>Untitled</title>
<style type="text/css">
<!--
.obligatorio{
border:1px solid red;
}
.noObligatorio{
border:1px solid black;
}
-->
</style>

<script language=JavaScript type=text/javascript>
<!--


String.prototype.itsWhitespace = function(){
return this.search(/\S/g) == -1 ? true : false

}

var msk_txt = /txt\d/

function check_txt(current_form){
// esta variable cuenta los campos vacios
var its_ok = 0
for(var ctr = 0; ctr < current_form.length; ctr++){
// coprobamos que el campo es obligatorio
if(msk_txt.test(current_form[ctr].name)){
// comprobamos que no este vacio
if(current_form[ctr].value.itsWhitespace()){
// esta vacio, marcamos el campo en rojo
current_form[ctr].style.border = "1px solid red"

its_ok++
}
else{
// esta
current_form[ctr].style.border = "1px solid black"
}

}

}
if(its_ok == 0){
// Enviamos el formulario
current_form.submit()
}
else{

alert("Por favor rellene los campos rojos")
}
}

//-->
</script>

</head>
<body>
<form action="formulario.php" method="post" name="form1" onsubmit="return false">
<input class="obligatorio" type="text" name="txt01" >
<input class="obligatorio" type="text" name="txt02" >
<input class="obligatorio" type="text" name="txt03" ><br>
<input class="noObligatorio" type="text" name="txtno"> Campo no obligatorio
<input type="button" value="Enviar" onclick = "check_txt(this.form)">
</form>
</body>
</html>


Espero que te sea util.

Un saludo
  #3 (permalink)  
Antiguo 09/12/2004, 17:52
Avatar de lorecasas  
Fecha de Ingreso: noviembre-2003
Mensajes: 126
Antigüedad: 20 años, 6 meses
Puntos: 0
quedo exacto!!

hola!!!

Oye gracias por el script, justo lo que necesitaba y tan breve , muchas gracias, quedo perfecto!!!

Atte. Lorena
__________________
Lorena ;-)
  #4 (permalink)  
Antiguo 09/12/2004, 18:02
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Hola, lorecasas
Parece que ya lo solucionaste, pero por si acaso...
en tu código original yo cambiaría:
text = 'txt' + String(i);
por
text = 'txt' + i;

y
if (('f.'+[text]+'.value') == ''){
por
if (('f.'+text+'.value') == ''){
__________________
Angel :cool:
  #5 (permalink)  
Antiguo 12/12/2004, 08:56
 
Fecha de Ingreso: agosto-2004
Mensajes: 157
Antigüedad: 19 años, 8 meses
Puntos: 5
Hola lorecasas, angsanchez.

De nada Lorena, me alegro de haberte sido ayuda, el script que te envie se puede mejorar, olvide devolver el foco al primer campo vacio y eliminar los espacios a ambos lados de las cadenas de los campos obligatorios.

Te envio el script con los cambios

<script language=JavaScript type=text/javascript>
<!--


String.prototype.itsWhitespace = function(){
return this.search(/\S/g) == -1 ? true : false

}
String.prototype.trim = function() {
return this.replace(/(^\s*)|(\s*$)/g, "");
}
var msk_txt = /txt\d/

function check_txt(current_form){
// esta variable cuenta los campos vacios
var its_ok = 0
// esta variable almacena el primer text vacio
var textfocus
for(var ctr = 0; ctr < current_form.length; ctr++){
// coprobamos que el campo es obligatorio
if(msk_txt.test(current_form[ctr].name)){
// comprobamos que no este vacio
if(current_form[ctr].value.itsWhitespace()){
// esta vacio, marcamos el campo en rojo
current_form[ctr].style.border = "1px solid red"
if(its_ok == 0){
textfocus = current_form[ctr]
}
its_ok++
}
else{
// no esta vacío
current_form[ctr].style.border = "1px solid black"
// quitamos los espacios en blanco a ambos lados de la cadena
current_form[ctr].value.trim()
}

}

}
if(its_ok == 0){
// Enviamos el formulario
current_form.submit()
}
else{
alert("Por favor rellene los campos rojos")
textfocus.focus()
}
}

//-->
</script>

Por cierto, muy buena idea lo de identificar los campos obligatorios con una cadena y numeros.

Saludos
  #6 (permalink)  
Antiguo 12/12/2004, 11:42
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola a todos:

Quería indicar unos errores del script inicial, y también de los arreglos de angsanchez (¡Hola !)...

Al evaluar:
if (('f.'+[text]+'.value') == ''){
alerta = true;
}
... o la versión:
if (('f.'+text+'.value') == ''){

tenemos que 'f.' es una cadena de texto y nunca un formulario:
var f = document.forms['form1'];

Con la versión original se hubiera podido considerar elementos del formulario cosas así:
eval('f.'+text+'.value').
o
f[text].value

De todos modos, si está solucionado, solo podrá servir como referencia.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 12/12/2004, 17:58
Avatar de lorecasas  
Fecha de Ingreso: noviembre-2003
Mensajes: 126
Antigüedad: 20 años, 6 meses
Puntos: 0
la ultima dudita

Hola!! muchas gracias a los dos , kepawe y caricatos, oigan ya que estamos en esto y dando mas lata, lo unico que no entiendo bien de este codigo es la parte:


String.prototype.itsWhitespace = function(){
return this.search(/\S/g) == -1 ? true : false

}
String.prototype.trim = function() {
return this.replace(/(^\s*)|(\s*$)/g, "");
}
var msk_txt = /txt\d/

No soy experta en javascript y quisiera saber si me pueden dar alguna url donde se expliquen el significado de expresiones como: /\S/g y /txt\d/

Mil Gracias!!!
__________________
Lorena ;-)
  #8 (permalink)  
Antiguo 13/12/2004, 19:07
 
Fecha de Ingreso: agosto-2004
Mensajes: 157
Antigüedad: 19 años, 8 meses
Puntos: 5
Hola de nuevo.
Son expresiones regulares, pueden volverte loco de vez en cuando, pero merece la pena aprender como funcionan, te ahorran mucho código.

Te envio estás direcciones.

http://javascript.espaciolatino.com

http://msdn.microsoft.com/library

http://doc.rz.ifi.lmu.de/web/js/CoreReferenceJS15

Saludos
  #9 (permalink)  
Antiguo 14/12/2004, 00:23
Avatar de lorecasas  
Fecha de Ingreso: noviembre-2003
Mensajes: 126
Antigüedad: 20 años, 6 meses
Puntos: 0
muchas gracias kepawe, tan rebien ;) gracias, saludos y nos vemos!!

Atte. Lore
__________________
Lorena ;-)
  #10 (permalink)  
Antiguo 08/07/2009, 09:58
 
Fecha de Ingreso: junio-2009
Mensajes: 96
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: validar vacios en campos dinamicos

Hola estaba proando su codigo....

Pues si bien no me da error en jacascript al recorrer el for nunca me entra a esta linea

if(msk_txt.test(current_form[ctr].name)){
....
}

Por lo tanto el contador q tenemos abajo pues siempre me hace el submit

if(its_ok == 0){
current_form.submit(); // Enviamos el formulario
} else{
alert("Por favor rellene los campos rojos")
textfocus.focus()
}

Ha q hacen referencia a esa linea?

Se que --- > current_form[ctr].name me trae el name de todos los campos en el formulario

Pero -->msk_txt de donde salio??

A ver si alguien me orienta je. Gracias
  #11 (permalink)  
Antiguo 08/07/2009, 09:59
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: validar vacios en campos dinamicos

El mensaje original es de hace más de 4 años. Por favor, no reviváis temas tan antiguos.

Saludos,
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 22:34.