Foros del Web » Programando para Internet » Javascript »

Recoger array de textbox para validar

Estas en el tema de Recoger array de textbox para validar en el foro de Javascript en Foros del Web. Buenas Tardes a todos Estoy realizando una validacion para controlar el ingreso de datos en un input, (que se genera de una consulta), en javascript, ...
  #1 (permalink)  
Antiguo 06/01/2008, 12:10
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Recoger array de textbox para validar

Buenas Tardes a todos


Estoy realizando una validacion para controlar el ingreso de datos en un input, (que se genera de una consulta), en javascript, pero el problema es como recojo esta matriz (si se puede llamar asi) para validarla

siendo la construccion del input el siguiente:

Código PHP:
<input type="text" name="tal_'.$row1['id_prenda'].'_'.$row1['id_talla'].'"   />

 
/**** un ejemplo seria : **/

<input type="text" name="tal_30_8'"   />
<
input type="text" name="tal_30_10'"   />
<
input type="text" name="tal_30_12'"   />
<
input type="text" name="tal_30_14'"   />
<
input type="text" name="tal_30_16'"   /> 
Claro está que esto se encuentra dentro de un form

Como puedo recoger estos textbox en javascript

Saludos y gracias a todos
  #2 (permalink)  
Antiguo 06/01/2008, 14:19
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Recoger array de textbox para validar

Hola JuanKa:

¿Quieres decir que no sabes a priori que dos números van a aparecer allí? ¿Y además pueden tener una o dos cifras?

Complicado... yo simplificaría el problema colocándo un DIV que los agrupe a todos:
Código PHP:
<div id="padre">
<
input type="text" name="tal_30_8'"   />
<
input type="text" name="tal_30_10'"   />
<
input type="text" name="tal_30_12'"   />
<
input type="text" name="tal_30_14'"   />
<
input type="text" name="tal_30_16'"   />  
</
div
Y luego obtenerlos así:
Código PHP:
document.getElementById("padre").getElementsByTagName("INPUT"); 
Aunque ya te advierto que la manera natural, si cada input va a tener un name diferente, es que utilices el atributo id para esta tarea. Luego para recopilar todos los campos de ese tipo, es útil que tenga un campo name con el mismo valor para todas las cajas:
Código PHP:
document.getElementsByName("nombreComunDeLasCajas"); 

También podría haber otros métodos, pero esos serían los más asequibles.



Un saludo
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 07/01/2008, 07:42
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Re: Recoger array de textbox para validar

hola derkenuke

Pero como puedo validar con esta linea que me acabas de indicar,

Código PHP:
document.getElementById("padre").getElementsByTagName("INPUT"); 
sabiendo que puedo ser no solo 5, sino que esto puede variar, y puedo ir de 1 a n

es decir:

Código PHP:
<div id="padre"
<
input type="text" name="tal_30_8'"   /> 
<
input type="text" name="tal_30_10'"   /> 
<
input type="text" name="tal_30_12'"   /> 
<
input type="text" name="tal_30_14'"   /> 
<
input type="text" name="tal_30_16'"   />   
<
input type="text" name="tal_30_18'"   /> 
<
input type="text" name="tal_30_20'"   /> 
<
input type="text" name="tal_30_22'"   /> 
<
input type="text" name="tal_30_24'"   /> 
<
input type="text" name="tal_30_26'"   />   
...
...
...
...
...


</
div
Como puedo hacer la validacion(llamar a una funcion que valide en javascript) para que el valor ingresado sea diferente a vacio, es decir, no se ingrese nada.

Estare muy agradecido por tu ayuda.

Saludos
  #4 (permalink)  
Antiguo 07/01/2008, 08:14
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: Recoger array de textbox para validar

Hola JuanKa

Prueba con este código:

Código PHP:
for (i=0ele document.getElementById("padre").getElementsByTagName("input")[i]; i++)
  if (
ele.value == '') {
    
alert(No puede haber campos vacíos);
    return 
false;
  } 
Saludos,
  #5 (permalink)  
Antiguo 07/01/2008, 14:39
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Re: Recoger array de textbox para validar

Hola JavierB y a todos

Estuve probando tu codigo pero no me va, estuve investigando en todo este foro pero no lo puedo resolver.

A ver aca te paso el codigo, derrepente estoy haciendo algo mal.

Código PHP:
/*******************************************************/

echo '<form action="javascript:verificar_tallas_colores()" name="frm_pack_cantidad" id="frm_pack_cantidad" method="post">';    

/*******************************************************/

        

    
echo '<table width="300" border="0" cellspacing="0" cellpadding="0" align="center">';
    echo 
'<tr>';
         while (
$colores $bd->bbdd_fetch($EJECT_colores)){
            
$SQL_color_descripcion "SELECT * FROM colores WHERE id= '$colores[id_color]' ";
            
$EJECT_color_descripcion  $bd->bbdd_query($SQL_color_descripcion);
            
$descripcion_color $bd->bbdd_result($EJECT_color_descripcion,0,'descripcion');
            echo 
'<td><input name="colores[]" type="checkbox"  value="'.$colores["id_color"].'"><div align="center">'.$descripcion_color.'</div></td>';                     
         }
    echo 
'</tr>';
    echo 
'</table>';

    echo 
'<table width="300" border="0" cellspacing="0" cellpadding="0" align="center">';
    while (
$row1 $bd->bbdd_fetch($qty_talla)){
        
$SQL_tallas='';
        
$SQL_tallas ='SELECT * FROM tallas WHERE id='.$row1['id_talla'];
        
$EJECT_SQL_tallas=$bd->bbdd_query($SQL_tallas);
        
$var_talla=$bd->bbdd_result($EJECT_SQL_tallas,0,"referencia");


/**************************************************/
        
        
echo '<div id="padre">';
            echo 
'<tr>';
                echo 
'<td>Talla -> '.$var_talla.'</td>';
                echo 
'<td><input type="text" name="tal_'.$row1['id_prenda'].'_'.$row1['id_talla'].'"  class="input_texto" style="text-align:center" maxlength="2" size="10" onkeypress="return validar_campos(event,/^([0-9])$/)" /></td>';                                              
            echo 
'</tr>';
        echo 
'</div>';
/*************************************************/
        
    
}
    echo 
'<tr>';
        echo 
'<br /><td colspan="2"><center><input type="submit" name="Submit" value="Enviar"></center></td>';
        echo 
'<input type="hidden" name="oculto_prenda" value="'.$Idprenda.'">';                
        echo 
'<input type="hidden" name="oculto_repre" value="'.$v_id_repre.'">';                                
    echo 
'</tr>';
    echo 
'</table>';
echo 
'</form>'
y Javascript

Código HTML:
<script>
function verificar_tallas_colores(){

for (i=0; ele = document.getElementById("padre").getElementsByTagName("input")[i]; i++)
	if (ele.value == '') {
		alert('No puede haber campos vacíos');
		return false;
	}  

frm_pack_cantidad.action="ventas.php?a=pack_actualizar";
document.frm_pack_cantidad.submit();

}
</script> 
Como puedo solucionar este problemilla.

Saludos y Gracias.
  #6 (permalink)  
Antiguo 07/01/2008, 19:17
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Recoger array de textbox para validar

Ui, JuanKa, nos ayudaría mucho que posteases un ejemplo sin PHP, sólo un HTML de ejemplo. Así es un poco dificil ponerlo en práctica...

Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #7 (permalink)  
Antiguo 08/01/2008, 09:45
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Re: Recoger array de textbox para validar

Bueno aca los mando un poco mas sintetizado

Código HTML:
<form action="javascript:verificar_tallas_colores()" name="frm_pack_cantidad" id="frm_pack_cantidad" method="post">
	<table>
	<div id="padre">
		<tr>
			<td>Talla -> <?=$var_talla?></td>
			<td><input type="text" name="tal_<?=$row1['id_prenda']_$row1['id_talla'] ?>"  class="input_texto" style="text-align:center" maxlength="2" size="10" onkeypress="return validar_campos(event,/^([0-9])$/)" /></td>                                               
		</tr>
	</div>
	</table>
</form> 
Código HTML:
<script>
function verificar_tallas_colores(){

for (i=0; ele = document.getElementById("padre").getElementsByTagName("input")[i]; i++)
    if (ele.value == '') {
			alert('No puede haber campos vacíos');
			return false;
		}  

	frm_pack_cantidad.action="ventas.php?a=pack_actualizar";
	document.frm_pack_cantidad.submit();
}
</script> 
Recuerde que esta linea:
Código HTML:
<input type="text" name="tal_<?=$row1['id_prenda']_$row1['id_talla'] ?>"  class="input_texto" style="text-align:center" maxlength="2" size="10" onkeypress="return validar_campos(event,/^([0-9])$/)" /> 
Puede haber 1 o n textbox, que se llenaran segun una consulta, como dije en los post anteriores.

Ahhhh se me olvidaba el prefijo de los nombres de los textbox es : tal_

Como puedo validar estos texto box para que no sean vacios?

Saludos a todos.
Gracias
  #8 (permalink)  
Antiguo 08/01/2008, 12:39
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Recoger array de textbox para validar

Hola:

Para empezar tienes mal construído el HTML: Un elemento <table> no puede tener de hijo un <div>. Sólo un <td> puede tener elementos de bloque como <div>. Si empezamos con un HTML bien formado nos ahorraremos complicaciones.

También es bueno saber que en el atributo action tiene que colocarse una url, no códigos de script. Así hacemos al código accesible. En onsubmit colocaremos el código cliente.

Comprueba ésto: a mi me ha funcionado:
Código PHP:
<form action="ventas.php?a=pack_actualizar" onsubmit="return verificar_tallas_colores()" name="frm_pack_cantidad" id="frm_pack_cantidad" method="post">
    <
table id="padre">
        <
tr>
            <
td>Talla -> xx</td>
            <
td><input type="text" name="tal_45_24"  class="input_texto" style="text-align:center" maxlength="2" size="10" onkeypress="return validar_campos(event,/^([0-9])$/)" /></td>   
        </
tr>
        <
tr>
            <
td>Talla -> xx</td>
            <
td><input type="text" name="tal_22_1"  class="input_texto" style="text-align:center" maxlength="2" size="10" onkeypress="return validar_campos(event,/^([0-9])$/)" /></td>   
        </
tr>
        <
tr>
            <
td>Talla -> xx</td>
            <
td><input type="text" name="tal_89_23"  class="input_texto" style="text-align:center" maxlength="2" size="10" onkeypress="return validar_campos(event,/^([0-9])$/)" /></td>   
        </
tr>
        <
tr>
            <
td>Talla -> xx</td>
            <
td><input type="text" name="tal_7_6"  class="input_texto" style="text-align:center" maxlength="2" size="10" onkeypress="return validar_campos(event,/^([0-9])$/)" /></td>   
        </
tr>
    </
table>
    <
button type="submit">Envia</button>
</
form>



<
script type="text/javascript">
<!--

function 
validar_campos() {
    return 
true;
}

function 
verificar_tallas_colores(){
    for (var 
i=0eleele document.getElementById("padre").getElementsByTagName("input")[i]; i++)
        if (
ele.value == '') {
            
alert('No puede haber campos vacíos');
            return 
false;
        }
    return 
true;
}


// -->
</script> 
Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #9 (permalink)  
Antiguo 08/01/2008, 14:54
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Re: Recoger array de textbox para validar

PERFECTO. amigo derkenuke


EN EL BLANCO,

Problema resuelto, estuve poniendo el div en un lugar donde no era, y el action lo estaba construyendo mal.

Mis mas sinceros agradecimientos a todos, los que hacen posible que esta comunidad sea cada vez mas grande y que nos ayudemos mutuamente.

Reciban un cordial saludo.
  #10 (permalink)  
Antiguo 08/01/2008, 16:07
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Recoger array de textbox para validar

No hay de qué JuanKa

__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #11 (permalink)  
Antiguo 17/01/2008, 15:16
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Re: Recoger array de textbox para validar

Buenas Tardes Nuevamente a todos.

Este post se refiere a los colores (parecido a de las tallas).


Estoy haciendo una funcion para validar que al menos un checkbox este marcado, caso contrario me arroje un mensaje con el alert. El codigo es el siguiente:

Código HTML:
<form action="ventas.php?a=pack_actualizar" onsubmit="return verificar_tallas_colores()" name="frm_pack_cantidad" id="frm_pack_cantidad" method="post"> 

	<table width="300" border="0" cellspacing="0" cellpadding="0" align="center" id="divs_colores">
	<tr>
		<? while ($colores = $bd->bbdd_fetch($EJECT_colores)){
			$SQL_color_descripcion = "SELECT * FROM colores WHERE id= '$colores[id_color]' ";
			$EJECT_color_descripcion  = $bd->bbdd_query($SQL_color_descripcion);
			$descripcion_color = $bd->bbdd_result($EJECT_color_descripcion,0,'descripcion');
		?>	
			<td><input name="colores[]" type="checkbox"  value="<?=$colores["id_color"]?>" ><div align="center"><?=$descripcion_color?></div></td> 					
		 <? } ?>
	</tr>
	</table>
</form> 
y en la funcion verificar_tallas_colores() es:

Código:
function verificar_tallas_colores(){ 

	var xx = 0;
	var cantid = 0;
	cantid = document.forms['frm_pack_cantidad']['colores[]'].length;

	for ( var y=0; y < cantid; y++) { 
		if (document.forms['frm_pack_cantidad']['colores[]'][y].checked) { 
		xx =  xx + 1; 
		} 
	} 
	if (xx == 0){
		alert('¡Seleccione al menos un COLOR');
	return false;
	}
	return true; 
}
En el form del archivo php puede arrojar como resultado un color como varios colores, EL PROBLEMA ES CUANDO LA PRENDA TIENE UN COLOR, por mas que lo marque me envia el mensaje del alert('¡Seleccione al menos un COLOR'); pero cuando la consulta arroja dos o mas resultados ; me va bien, es decir si por ejemplo la consulta arroja 3 colores y marco 1 o 2 o los 3 checkbox alli es correcto(puedo marcar como minimo 1 dejando libre el resto).

No sé donde puede estar el error, en la funcion de javascript.

Gracias y saludos a todos
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 04:40.