Foros del Web » Programando para Internet » Javascript »

Conbinar dos javascript

Estas en el tema de Conbinar dos javascript en el foro de Javascript en Foros del Web. Hola a todos, tengo una duda, estoy aqui tratando de unir dos codigos distintos de validacion para formar uno solo, ya intente varias maneras pero ...
  #1 (permalink)  
Antiguo 22/07/2009, 17:40
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Conbinar dos javascript

Hola a todos, tengo una duda, estoy aqui tratando de unir dos codigos distintos de validacion para formar uno solo, ya intente varias maneras pero siempre me manda un error y no se ve la pagina.

entonces necesito si alguien con mas conocimientos y/o experiencia que me puede orientar y/o darme una mano, toda ayuda sera agradecia.

este es el primer codigo

Código:
function comprobar1(){
	var mal=false;
	numero=document[1].elements.length;
	for(a=0;a<numero;a++){
		if (document[1].elements[a].className=='obligatorio')
		if (document[1].elements[a].value.length < 10){
			document[1].elements[a].style.backgroundColor="#FFD2DB";mal=true;
		}else{
			document[1].elements[a].style.backgroundColor="white";
		}
	}
	for(b=0;b<numero;b++){
		if (document[1].elements[b].className=='resultado')
		if (document[1].elements[b].value.length < 2){
			document[1].elements[b].style.backgroundColor="#FFD2DB";mal=true;
		}else{
			document[1].elements[b].style.backgroundColor="white";
		}
	}
	if(mal){
		alert("Por favor, complete los campos marcados.");
	}else{
		document[1].submit()
	}
}

Como veran en esta validacion me refiero a un formulario por su nombre y a dos campos en especifico tambien por su nombre, es te es el formato que le quiero dar a toda la validacion por que en un mismo documento tengo varios formularios pero solo uno se manda por vez.

Este es mi otro codigo que quiero integrar al primero

[B]PFFF no pude poner el codigo me marco que tenia un enlace y pues no es verdad, bueno lo subi y dejo el link:



Intente quitando eliminaEspacios y validaIngreso por que en realidad esas dos funciones no me interesan mas bien que checa un rango de caracteres como en el primer codigo, pero como dije antes no me salio y me marco mas de un error.

alguien que sepa como arreglar este lio?

salu2!

Última edición por tampon; 11/08/2009 a las 08:30
  #2 (permalink)  
Antiguo 23/07/2009, 02:25
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Conbinar dos javascript

Los dos scripts no interactuan entre ellos por lo que no tendrian por que molestarse.... si funcionan por separado no tienen por que no hacerlo juntos...

Ahora bien comprobar1() diria que no esta bien.... he hecho unos cambios y así funciona, la parte ajax no la he mirado pero ...

y si quita lo que no vayas a usar... ni que sea por economia de red...

curiosa forma de diferenciar los campos obligatorios... con el nombre de la case.....

Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
function comprobar1(objform){
	var mal=false;
	numero=objform.elements.length;
	for(a=0;a<numero;a++){
	  if (objform.elements[a].className=='obligatorio'){
		if (objform.elements[a].value.length < 10){
			objform.elements[a].style.backgroundColor="#FFD2DB";mal=true;
		}else{
			objform.elements[a].style.backgroundColor="white";
		}
	  }
	}
	for(b=0;b < numero;b++){
		if (objform.elements[b].className=='resultado'){
		if (objform.elements[b].value.length < 2){
			objform.elements[b].style.backgroundColor="#FFD2DB";mal=true;
		}else{
			objform.elements[b].style.backgroundColor="white";
		}
	  }
	}
	if(mal){
		alert("Por favor, complete los campos marcados.");
	}else{
		document.submit()
	}
}


//--------------------------
// Verificar Bacuche

function nuevoAjax()
{ 
	var xmlhttp=false; 
	try 
	{ 
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch(e)
	{ 
		try
		{ 
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
		} 
		catch(E) { xmlhttp=false; }
	}
	if (!xmlhttp && typeof XMLHttpRequest!="undefined") { xmlhttp=new XMLHttpRequest(); } 

	return xmlhttp; 
}

function eliminaEspacios(cadena)
{
	var x=0, y=cadena.length-1;
	while(cadena.charAt(x)==" ") x++;	
	while(cadena.charAt(y)==" ") y--;	
	return cadena.substr(x, y-x+1);
}

function validaIngreso(valora)
{
	var reg=/(^[a-zA-Z0-9.@ ]{10,15}$)/;
	if(reg.test(valora)) return true;
	else return false;
}

function nuevoEvento(evento)
{
	var divMensaje=document.getElementById("error");

	if(evento=="ingreso")
	{
		var input=document.getElementById("ingreso");
		var boton=document.getElementById("botonIngreso");
		var valora=input.value;
		var textoAccion="Ingresando...";
	}
	else
	{
		var input=document.getElementById("verificacion");
		var boton=document.getElementById("botonVerificacion");
		var valora=input.value;
		var textoAccion="Comprobando...";
	}
	valora=eliminaEspacios(valora);
/*A <-- Y esto que hace aquí??? */
	if(!validaIngreso(valora)) 
	{
		divMensaje.innerHTML="El bauche ingresado contiene caracteres o longitud inv&aacute;lida";
	}
	else
	{
		boton.disabled=true; input.disabled=true;
		input.value=textoAccion;
		
		var ajax=nuevoAjax();
		ajax.open("POST", "comprobar.php", true);
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.send(evento+"="+valora);
		
		ajax.onreadystatechange=function()
		{
			if (ajax.readyState==4)
			{
				input.value="";
				boton.disabled=false; input.disabled=false;
				divMensaje.innerHTML=ajax.responseText;
			}
		}
	}
}
</script>
</head>

<body>
<form action="" method="get">
<input name="" type="text" class="obligatorio">
<input name="" type="text" class="resultado">
<input name="" type="button" onClick="comprobar1(this.form)">
</form>
</body>
</html> 
Quim

Última edición por quimfv; 23/07/2009 a las 02:39
  #3 (permalink)  
Antiguo 23/07/2009, 08:36
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Conbinar dos javascript

Hola quimfv, gracias por tu respuesta! lo que yo hice es mas o menos asi, haber que opinas, dame tu opinion.

Código HTML:
function nuevoAjax()
{ 
	var xmlhttp=false; 
	try 
	{ 
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch(e)
	{ 
		try
		{ 
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
		} 
		catch(E) { xmlhttp=false; }
	}
	if (!xmlhttp && typeof XMLHttpRequest!="undefined") { xmlhttp=new XMLHttpRequest(); } 

	return xmlhttp; 
}


//--


function comprobar1(evento){
	var mal=false;
	var divMensaje=document[1].getElementById("error");

	if(evento=="ingreso")
	{
		var input=document[1].elements[c].getElementById("ingreso");
		var boton=document[1].elements[c].getElementById("botonIngreso");
		var valora=input.value;
		var textoAccion="Ingresando...";
	}
	else
	{
		var input=document[1].elements[c].getElementById("verificacion");
		var boton=document[1].elements[c].getElementById("botonVerificacion");
		var valora=input.value;
		var textoAccion="Comprobando...";
	}
	for(c=0;c<numero;c++){
		if (document[1].elements[c].className=='ningreso')
		if (document[1].elements[c].value.length < 10){
			document[1].elements[c].style.backgroundColor="#FFD2DB";mal=true;
		}else{
			document[1].elements[c].style.backgroundColor="white";
		}
	}	
	numero=document[1].elements.length;
	for(a=0;a<numero;a++){
		if (document[1].elements[a].className=='obligatorio')
		if (document[1].elements[a].value.length < 10){
			document[1].elements[a].style.backgroundColor="#FFD2DB";mal=true;
		}else{
			document[1].elements[a].style.backgroundColor="white";
		}
	}
	for(b=0;b<numero;b++){
		if (document[1].elements[b].className=='resultado')
		if (document[1].elements[b].value.length < 2){
			document[1].elements[b].style.backgroundColor="#FFD2DB";mal=true;
		}else{
			document[1].elements[b].style.backgroundColor="white";
		}
	}
	if(mal){
		alert("Por favor, complete los campos marcados.");
	}else{
		boton.disabled=true; input.disabled=true;
		input.value=textoAccion;
		
		var ajax=nuevoAjax();
		ajax.open("POST", "comprobar.php", true);
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.send(evento+"="+valora);
		
		ajax.onreadystatechange=function()
		{
			if (ajax.readyState==4)
			{
				input.value="";
				boton.disabled=false; input.disabled=false;
				divMensaje.innerHTML=ajax.responseText;
			}
		}
		document[1].submit()
	}
}
En lo personal me ah funcionado bien compruobar1() lo que pasa es como comente antes, tengo varios formularios, que realizan distintos eventos javascript cada uno, perooooo... resulta que los 8 estan dentro del mismo documento html, entonces para diferencias los procesos tuve que hacer esta jalada de nombrar cada formulario y cada campo, pero asi lo necesito hacer.

Saludos!

Última edición por tampon; 23/07/2009 a las 09:14
  #4 (permalink)  
Antiguo 23/07/2009, 09:30
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Conbinar dos javascript

Hola cheque tu codigo, pero me marco error, lo que pasa es que con el codigo del enlace consulto una base de datos antes de guardar y me manda un mensaje de si el dato es correcto o si ya esta en base de datos, bueno creo que esto es error mio por no comentarlo antes, el codigo es estraido de formato web, una funcion que se llama comprobar disponibilidad de nombre o algo asi, bueno, esta funcion la quiero usar en mi formulario para validar un numero, la use y me guarda bien la informacion en la base de datos, pero primero hace la comprobacion que tenia anteriormente y si el valor es correcto (el de la primera comprobacion) me manda inmediatamente el formulario, pero se olvida de comprobar en la base de datos osea solo comprueba a nivel cliente.

lo que hice despues es poner primero el codigo javascript de la comprobacion en la base de datos, suponiendo que el navegador lo interpreta en forma de cascada, pero tampoco me funciono, entonces estoy tratando de unirlos en uno solo.

salud2!
  #5 (permalink)  
Antiguo 24/07/2009, 01:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Conbinar dos javascript

Yo haria primero la validación en el lado cliente la cual es siempre muy ràpida ya que no hay comunicación con el servidor.

Si se valida llamas la funcion que hace la peticion al servidor, esa peticion se tiene que hacer forzosamente llamando otravez el archivo o llamando a otro archivo que haga las operaciones en el servidor con lenguaje servidor (php,asp,jsp o lo que sea). Aqui tendras otro condicional que hara primero las comprobaciones oportunas, pero no sera en javascript puesto que ahora estamos en el servidor.

En quanto a lo de nombrar los formularios con mi codigo lo tienes solucionado puesto que estas pasando el propio objeto formulario como parametro de la función puedes tener tantos formularios como quieras siempre trabajara sobre el correcto (this.form).

Por otro lado no te lies a hacer funciones muy grandes... si tienes dos funciones que funcionan no mezcles el codigo si como resultado de un condicion se tiene que ejecutar el codigo de una funcion llama la funcion por su nombre no peges el codigo en el condicional...

Quim

Última edición por quimfv; 24/07/2009 a las 05:09
  #6 (permalink)  
Antiguo 24/07/2009, 08:43
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Conbinar dos javascript

Gracias por tu respuesta Quim, aun sigo trabajando en el, cuando me funcione lo muestro si a alguien en un futuro le necesite.

salu2!
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 15:00.