Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/06/2008, 10:46
rodaeche
 
Fecha de Ingreso: junio-2008
Mensajes: 15
Antigüedad: 16 años, 7 meses
Puntos: 0
Exclamación Formulario en php + javascript no me funciona =(

Saludos!

Después de muchos intentos decido comentar esta duda, esperando que alguien me saque de este 'circulo vicioso' en el que me encuentro.

Resulta que tengo un formulario html, generado algunas de sus partes con php. Este formulario se valida con un script en javascript y posteriormente se envia a otra pagina.

El problema es que este formulario funciona cuando le da la gana; es decir, a veces hay que darle en refrescar para que funcione, otras veces funciona quitando alguna parte del codigo javascript, otras veces con el codigo que quité, otras veces de ninguna manera!!!

Mas abajo incluyo todo el codigo de la pagina, sin incluir el codigo css que no es necesario. No puse los pedazos del problema porque es mejor que lo vean, quienes deseen ayudarme, como un todo y puedan descubrir en que la estoy embarrando.

Agradezco de antemano a quienes puedan ayudarme, llevo semanas tratando de resolver esto y nada que lo logro.

---------------
Primera parte del codigo:
Código:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Crear nuevo producto</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language = "javascript">
//la funcion "IsInteger(YourNumber)" chequea si "YourNumber" es un número entero con o sin signo valido
//La variable "YourNumber" es una cadena de caracteres
function IsInteger(YourNumber){
	var Template = /^[+|-]?d+$/ //Formato de número entero
	return (Template.test(YourNumber)) ? 1 : 0 //Compara "YourNumber" con el formato "Template" y si coincidevuelve verdadero si no devuelve falso
}
//la funcion "IsReal(YourNumber)" chequea si "YourNumber" es un número real con o sin signo valido
//La variable "YourNumber" es una cadena de caracteres
function IsReal(YourNumber){
	var Template = /^(([+|-]?d+(.d*)?)|([+|-]?(d*.)?d+))$/ //Formato de número real con signo
	return (Template.test(YourNumber)) ? 1 : 0 //Compara "YourNumber" con el formato "Template" y si coincidevuelve verdadero si no devuelve falso
}

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];
	'alert(unidad);
	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();
			}
		}
	}
	
	//Valido la mano de obra.  Si esta seleccionada, debe aparecer una cantidad adjunta. 
	//mo1= Costura, mo2= Corte, mo3= PegarBroche, mo4= Sellado, mo5= Corte sesgo, mo6= Empaque y revisión.
	if(document.fCrear.checkMo1.checked && document.fCrear.cantMo1.value=="" && estaBien){
		estaBien=false;
		alert("Debe digitar la cantidad para la mano de obra Costura!");
		document.fCrear.cantMo1.focus();
	}
	if(!document.fCrear.checkMo1.checked){
		document.fCrear.cantMo1.value = 0;
	}
	if(document.fCrear.checkMo2.checked && document.fCrear.cantMo2.value=="" && estaBien){
		estaBien=false;
		alert("Debe digitar la cantidad para la mano de obra Corte!");
		document.fCrear.cantMo2.focus();
	}
	if(!document.fCrear.checkMo2.checked){
		document.fCrear.cantMo2.value = 0;
	}
	if(document.fCrear.checkMo3.checked && document.fCrear.cantMo3.value=="" && estaBien){
		estaBien=false;
		alert("Debe digitar la cantidad para la mano de obra Pegar broche!");
		document.fCrear.cantMo3.focus();
	}
	if(!document.fCrear.checkMo3.checked){
		document.fCrear.cantMo3.value = 0;
	}
	if(document.fCrear.checkMo4.checked && document.fCrear.cantMo4.value=="" && estaBien){
		estaBien=false;
		alert("Debe digitar la cantidad para la mano de obra Sellado!");
		document.fCrear.cantMo4.focus();
	}
	if(!document.fCrear.checkMo4.checked){
		document.fCrear.cantMo4.value = 0;
	}
	if(document.fCrear.checkMo5.checked && document.fCrear.cantMo5.value=="" && estaBien){
		estaBien=false;
		alert("Debe digitar la cantidad para la mano de obra Corte sesgo!");
		document.fCrear.cantMo5.focus();
	}
	if(!document.fCrear.checkMo5.checked){
		document.fCrear.cantMo5.value = 0;
	}
	if(document.fCrear.checkMo6.checked && document.fCrear.cantMo6.value=="" && estaBien){
		estaBien=false;
		alert("Debe digitar la cantidad para la mano de obra Empaque y revisión!");
		document.fCrear.cantMo6.focus();
	}
	if(!document.fCrear.checkMo6.checked){
		document.fCrear.cantMo6.value = 0;
	}
	/*Nota: El campo de observaciones no se valida pues no es obligatorio.  Si el usuario no digita nada, se rellena con ...
	Si todo esta bien, envia el formulario a la aplicación php que ingresa el producto a la BD. */
	if(estaBien && confirm("A continuación se va a crear un nuevo producto.\nDesea continuar?")){
		document.fCrear.submit();
	}
}
</script>


</head>
<body>
<table width="800" border="1" align="center" cellpadding="0" cellspacing="0" id="Table_01">
  <tr>
    <td colspan="3" rowspan="2" background="images/ft-57_03.jpg" width="100%">
		<table width="100%"  border="0" align="center" cellpadding="2" cellspacing="0">
	        <tr>
	          <td width="8%">&nbsp;</td>
	          <td width="94%" height="83"><span class="style5">Proimpo</span></td>
	        </tr>
      </table>
	</td>
  </tr>
  <tr></tr>
  <tr>
    <td sTYLE="table-layout:fixed" height="100%" background="images/ft-57_08.jpg" valign="top" width="30%">
	  <br/>
	  <br/>
	  &nbsp;&nbsp;&nbsp;<strong><a href="http://192.168.1.232/proyecto/index.html">Inicio</a></strong><br/>
	  <br/>
	  <br/>
	  &nbsp;&nbsp;&nbsp;<strong><a href="http://192.168.1.232/proyecto/crear.php">Crear nuevo producto</a></strong><br/>
	  <br/>
	  <br/>
	  &nbsp;&nbsp;&nbsp;<strong><a href="http://192.168.1.232/proyecto/cotizacion.html">Cotizar producto</a></strong><br/>
	  <br/>
	  <br/>
	  &nbsp;&nbsp;&nbsp;<strong><a href="http://192.168.1.232/proyecto/consultar.html">Consultar producto</a></strong><br/>
	  <br/>
	  <br/>
	  &nbsp;&nbsp;&nbsp;<strong><a href="http://192.168.1.232/proyecto/eliminar.html">Eliminar producto</a></strong><br/>
	  <br/>
	  <br/>
	  &nbsp;&nbsp;&nbsp;<strong><a href="http://192.168.1.232/proyecto/modPrecios.php">Actualizar precios</a></strong><br/>
	  
    </td>
    
    <td colspan="2" background="images/ft-57_10.jpg" valign="top" width="70%">
		<table width="100%"  border="0" cellspacing="0" cellpadding="4">
			<tr>
			 <td width="100%">
			  <?php 
			  //$aux= split("-",$_POST["cliente"]);
			  //echo "Referencia: <b>".$_POST["referencia"]."</b><p>Cliente: <b>".$aux[1];			  
			  echo "Referencia: <b>".$_POST["referencia"];
			  ?>
			  </td>
	        </tr>
			<tr>
			<td>
					<table  width="100%"  border="0" cellspacing="0" cellpadding="4">
					<tr><td colspan="6"><HR width="90%"></tr>
					<td width="100%" colspan="6"><b>Indique por favor el material, ancho, largo y cantidad de cada pieza a utilizar:</b>