Ver Mensaje Individual
  #3 (permalink)  
Antiguo 16/06/2008, 09:57
rodaeche
 
Fecha de Ingreso: junio-2008
Mensajes: 15
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Ayuda Formulario Javascript

Con mucho gusto:

Código:
<script language = "javascript">

function arreglo(cadena){
//Crea arreglo con piezas.
i=0;
aux=0;
for(i=0; i<cadena.length; i++){
	if(cadena.charAt(i)=="/")
		aux+=1;
}
piezas = new Array(aux);
aux ="";
cont=0;
for(i=0; i<cadena.length; i++){
	if(cadena.charAt(i)!="/"){
		aux+=cadena.charAt(i);
	}
	else{
		piezas[cont]=aux;
		aux="";
		cont+=1;
	}		
}
return piezas;
}
function seleccionMat(nombre){

material = document.fCrear["mat_"+nombre].value;
arreglo= material.split("/");
unidad= arreglo[2];
if(unidad!=" CMS " && unidad!=" LAM "){
	document.fCrear["ancho_"+nombre].disabled = true;
	document.fCrear["ancho_"+nombre].value = 0;
	document.fCrear["largo_"+nombre].disabled = true;
	document.fCrear["largo_"+nombre].value= 0;
}else{
	document.fCrear["ancho_"+nombre].disabled = false;
	document.fCrear["largo_"+nombre].disabled = false;
}
}

function validacion(){
	
//Devuelve el arreglo de acuerdo a la cantidad de piezas que se hayan creado. 
piezas = arreglo(document.fCrear.piezas.value);
estaBien = true;
aux="";
//Con el nombre de la pieza, verifico que todos los campos esten llenos.
for(i=0;i<piezas.length && estaBien;i++){
	nombre = piezas[i];
	material = document.fCrear["mat_"+nombre].value;
	if(!document.fCrear["ancho_"+nombre].disabled){
		ancho = document.fCrear["ancho_"+nombre].value;
		largo = document.fCrear["largo_"+nombre].value;
		cantidad = document.fCrear["cant_"+nombre].value;
		//Validamos que se haya seleccionado un material
		if(material=="Seleccione un material..." && estaBien){
			estaBien = false;
			alert("Debe seleccionar un material para la pieza "+ nombre);
			document.fCrear["mat_"+nombre].focus();
		}
		//Validamos el ancho
		if((ancho=="" || ancho==0) && estaBien) {
			estaBien = false;
			alert("Debe digitar el ancho de la pieza " + nombre);
			document.fCrear["ancho_"+nombre].focus();
		}
		//Validamos el largo
		if((largo==0 || largo=="") && estaBien){
			estaBien = false;
			alert("Debe digitar el largo de la pieza " + nombre);
			document.fCrear["largo_"+nombre].focus();
		}
		//Validamos la cantidad
		if((cantidad==0 || cantidad=="") && estaBien){
			estaBien = false;
			alert("Debe digitar la cantidad para la pieza " + nombre);
			document.fCrear["cant_"+nombre].focus();
		}
	}
}

if(estaBien && confirm("A continuación se va a crear un nuevo producto.\nDesea continuar?")){
	document.fCrear.submit();
}
	
</script>
Código PHP:
//Este es el codigo que genera las listas y campos validados en el script

for($i=0;$i<(count($piezas)-1);$i++){
                            
    
//Tomo los materiales de la BD.
    
$res mysql_query($sql,$c);
    
$materiales "<option>Seleccione un material...</option>";
    
//Este ciclo me devuelve lista de materiales a escoger para cada pieza
    
while($row mysql_fetch_array($res)) {
        
$materiales.="<option size=\"20\">".$row["nombre"]." / ".$row["id_prov"]." / ".$row["unid_medida"]." / $".$row["costo_unid"]." / ".$row["id_mat"]."</option>";
    }
    
//Esto se hace para cada material en el arreglo de piezas.
    
$menu="<td width=\"70%\"><center><SELECT style=\"width:300px\" onChange=\"seleccionMat('".$piezas[$i]."')\" size=\"1\" name=\"mat_".$piezas[$i]."\">".$materiales."</SELECT></td>";
    
$ancho="<td width=\"10%\"><center><input type=\"text\" name=\"ancho_".$piezas[$i]."\" size=\"2\"></td>";
    
$largo="<td width=\"10%\"><center><input type=\"text\" name=\"largo_".$piezas[$i]."\" size=\"2\"></td>";
    
$cant="<td width=\"10%\"><center><input type=\"text\" name=\"cant_".$piezas[$i]."\" size=\"2\"></td>";
    
//Crea la fila con el nombre de la pieza, lista de materiales, campo para el ancho, largo y cantidad. 
    
echo "<tr><td>-<font size=\"1\">",$piezas[$i],"</font></td>",$menu,$ancho,$largo,$cant,"</tr>";
    }

//.... 
Código:
<input type="button" value="Crear producto!" name="crearProd" onclick="validacion()">

Última edición por rodaeche; 16/06/2008 a las 10:02