Weblogs Código

RecorteX

» javascript
73 usuarios y 243 recortes de código
Usuario

Contraseña
Crear cuenta
Estás viendo los recortes de la etiqueta javascript

RSS
Recortes: 26

Etiquetas relacionadas:
html
Ajax
XMLHttpRequest
JS
css
imagenes
temporizado
jquery
div
button
validaciones
radio
head
CSharp
texto
dni
cadena
validacion_fecha
redireccion
historia
tiempo
mayusculas
electronico
checkbox
validar
redirecicon
cuentas_bancarias
trim
nie
eventos
cif
variable
scroll
declarada
altura
vacio
php
forma
correo
xhtml

Ejemplo sencillo Ajax - Invocación y recogida de datos

Con este ejemplo se puede hacer una invocación a funciones que estén en otro fichero utilizando Ajax. En este ejemplo se asocia al evento onBlur de un campo de texto la llamada Ajax dentro de un javascript.
De esta forma el código que esta en cliente abre un canal al servidor y ejecuta el código que haya en el y lo devuelve


//Este es el código que va en cliente
<html>
<head>
<title>Prueba tarifas AJAX</title>
</head>
<body>
CampoTexto<input type="text" id="texto" onblur="calcula()" value="2007"><br/>
</html>
 
<script>
//Este es el código que va en cliente
 
function calcula()
{
// Obtener la instancia del objeto XMLHttpRequest
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
	http_request = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) { // Internet Explorer
	http_request = new ActiveXObject("Microsoft.XMLHTTP");
	}
	// Preparar la funcion de respuesta
	http_request.onreadystatechange = muestraContenido;
 
	//////////////////////////////////////////////////////////////////////
	// Realizar peticion HTTP/////////////////////////////////////////////
	
	var url = '/public/api/utilTarifas.aspx?cod='+document.getElementById('texto').value;
	
	//////////////////////////////////////////////////////////////////////
	http_request.open('GET', url, true);
	http_request.send(null);
	
function muestraContenido()
	{	
	if(http_request.readyState == 4)
		{
		if (http_request.status == 200) 
			{				
				var documento=http_request.responseText;
				//////////////////////////////////////////////////////////////////////
				// TRATAMOS LA RESPUESTA/////////////////////////////////////////////				
				
				if (documento !='Error')				
				{				
					alert(documento );
				}
				//////////////////////////////////////////////////////////////////////
			}	
		}	
	}
}
</script>
 

//Este puede ser el codigo invocado en otra página, en este caso con extensión aspx y que va en el servidor

 
<%@ Page Language="c#"%>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb"%>
<%@ import Namespace="System.Web" %>
<%@ import Namespace="System" %>
<%@ import Namespace="System.Net" %>
 
 
<%
try{
String codigo= Request.QueryString["cod"];
String tarifas="";
if(codigo='2007')
  tarifas="1,2,3,4,5";
else 
 tarifas="6,7,8,9,10";
 
 
//Ejecutas tu consulta de BBDD y la devuelves en el string 
//Este ejemplo sencillo devuelve una serie de valores
 
Response.Write(tarifas);
}
catch(Exception e)
{
//Response.Write(e);
Response.Write("Error");
}
%>
 

Validaciones Javascript DNI, NIE, CIF y CUENTAS BANCARIAS



		<label>DNI/NIF </label>
		<input type="text" id="dni" onblur="validaNif(this)"></input>
		<br><br>
		<label>CIF </label>
		<input type="text" id="cif" onblur="validaCif(this)"></input>
		<br><br>
		<label>NIE </label>
		<input type="text" id="nie" onblur="validaNie(this)"></input>		
		<br><br>
						
		<br><br>
		<label>DNI/NIF </label>
		<input type="text" id="dni2" onblur="validaNif2('dni2','ldni')"></input>
		&nbsp;
		<input type="text" id="ldni" size="1" onblur="validaNif2('dni2','ldni')"></input>
		<br><br>
		<label>CIF </label>
		<input type="text" id="cif2" onblur="validaCif2('cif2','lcif')"></input>
		&nbsp;
		<input type="text" id="lcif" size="1" onblur="validaCif2('cif2','lcif')"></input>
		<br><br>
		<label>NIE </label>
		<input type="text" id="nie2" onblur="validaNie2('nie2','lnie')"></input>
		&nbsp;
		<input type="text" id="lnie" size="1" onblur="validaNie2('nie2','lnie')"></input>
		<br><br>

    <TABLE BORDER=0>
    <TR>
      <TD>Banco</TD>
      <TD>Sucursal</TD>
      <TD>DC</TD>
      <TD>Cuenta</TD>
    </TR>
    <TR>
      <TD><INPUT TYPE="text" NAME="banco" id="banco" MAXLENGTH="4" SIZE="4" onblur="validar('banco','sucursal','dc','cuenta')"></TD>
      <TD><INPUT TYPE="text" NAME="sucursal" id="sucursal" MAXLENGTH="4" SIZE="4" onblur="validar('banco','sucursal','dc','cuenta')"></TD>
      <TD><INPUT TYPE="text" NAME="dc" id="dc" MAXLENGTH="2" SIZE="2" onblur="validar('banco','sucursal','dc','cuenta')"></TD>
      <TD><INPUT TYPE="text" NAME="cuenta" id="cuenta" MAXLENGTH="10" SIZE="10" onblur="validar('banco','sucursal','dc','cuenta')"></TD>
    </TR>
    </TABLE>
  </FORM>
 
 
//Funcion volver
function retornar(id)
{
	control=document.getElementById(id);
	document.getElementById(id).value='';	
	//document.getElementById(id).select();		
	//document.getElementById(id).focus();
	return;
	
}
 
 
//Funciones auxiliares
function IsNumeric(cadena)
{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;
 
 
   for (i = 0; i < cadena.length && IsNumber == true; i++) 
      { 
      Char = cadena.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
   }
 
   
// check to see if input is alphabetic
function isAlphabetic(cadena)
{
if (cadena.match(/^[a-zA-Z]+$/))
{
return true;
}
else
{
return false;
} 
}
   
 
 
 
//Funciones validadoras
 
function validaNif(control) 
{	
  if (control.value=="")
	return;
  var dni=control.value;    
  var numero = dni.substr(0,dni.length-1);
  var let = dni.substr(dni.length-1,1);
  let=let.toUpperCase();
  numero = numero % 23;
  var letra='TRWAGMYFPDXBNJZSQVHLCKET';
  letra=letra.substring(numero,numero+1);    
  //alert(letra);
  if (letra!=let)   
  {
    mensaje("dni","es");
    retornar(control.id);		
  }
}
 
 
function validaCif(control)
{ 
  if (control.value=="")
  {
	return;
  }
        var texto=control.value;
        var pares = 0; 
        var impares = 0; 
        var suma; 
        var ultima; 
        var unumero; 
        var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I"); 
        var xxx; 
         
        texto = texto.toUpperCase(); 
         
        var regular = new RegExp(/^[ABCDEFGHKLMNPQS]\d\d\d\d\d\d\d[0-9,A-J]$/g); 
         if (!regular.exec(texto)) 
			{
				mensaje("cif","es");
				retornar(control.id);		
			}
		 
              
         ultima = texto.substr(8,1); 
 
         for (var cont = 1 ; cont < 7 ; cont ++){ 
             xxx = (2 * parseInt(texto.substr(cont++,1))).toString() + "0"; 
             impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1)); 
             pares += parseInt(texto.substr(cont,1)); 
         } 
         xxx = (2 * parseInt(texto.substr(cont,1))).toString() + "0"; 
         impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1)); 
          
         suma = (pares + impares).toString(); 
         unumero = parseInt(suma.substr(suma.length - 1, 1)); 
         unumero = (10 - unumero).toString(); 
         if(unumero == 10) unumero = 0; 
          
         if ((ultima == unumero) || (ultima == uletra[unumero])) 
             return true; 
         else 
             {
				mensaje("cif","es");
				retornar(control.id);		
			 }
 
    } 
 
	
function validaNie(control) 
{	
  if (control.value=="")
	return;	
 
	var a=control;		
	var temp=a.value.toUpperCase();
	var cadenadni="TRWAGMYFPDXBNJZSQVHLCKET";
	var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
	var posicion=0;
	var letra=" ";
	
	//Residente en España	
	if (a.value.length==9)
	{
		if (temp.substr(0,1)=="X")
		{
			var temp1=temp.substr(1,7);
 
			posicion = temp1 % 23; /*Resto de la division entre 23 es la posicion en la cadena*/
			letra = cadenadni.substring(posicion,posicion+1);
			if (!/^[A-Za-z0-9]{9}$/.test(temp))
			{ 
				mensaje("nie","es");
				retornar(control.id);	
			}
			else
			{ 
				//Tiene los 9 dígitos, comprobamos si la letra esta bien
				var temp1=temp.substr(1,7);
				posicion = temp1 % 23; /*Resto de la division entre 23 es la posicion en la cadena*/
				letra = cadenadni.charAt(posicion);
				var letranie=temp.charAt(8);
				if (letra != letranie){			
					mensaje("nie","es");
					retornar(control.id);			
				}				
			}
		}
		else
		{
			mensaje("nie","es");
			retornar(control.id);			
		}		
	}else if (a.value.length==14){//14 caracteres, los 2 primeros letras
		var temp1=temp.substr(0,2);
		if (isAlphabetic(temp1)!=true)	
			{
			mensaje("nie","es");
			retornar(control.id);	
			}
	}
	else
	{
			mensaje("nie","es");
			retornar(control.id);			
 
	}
	
}
 
 
 
 
 
  
	
 
function mensaje(msg,lang)
{
	if (lang=="es")
	{
		if(msg=="dni")	
			{
			alert("DNI no valido");
			}
		else if (msg=="cif")
					{
			alert("CIF no valido");
			}
		else if (msg=="nie")
					{
			alert("NIE no valido");
			}			
		else if (msg=="dc")
					{
			alert("El digito de control no es correcto");
			}						
		else if (msg=="completo")
					{
			alert("Rellene todos los datos de la cuenta");
			}									
		else if (msg=="formato")
					{
			alert("Formato incorrecto");
			}									
		else
			alert("Formato no valido");
	}
	
}
 
 
 
function validar(ibanco,isucursal,idc,icuenta) 
  {  
	var banco=(document.getElementById(ibanco).value);
	var sucursal=(document.getElementById(isucursal).value);
	var dc=(document.getElementById(idc).value);
	var cuenta=(document.getElementById(icuenta).value);	  
  
		if (banco == ""  || sucursal == "" || dc == "" || cuenta == ""){
		  return;
		}
		else 
		{
			if (banco.length != 4 || sucursal.length != 4 ||
				dc.length != 2 || cuenta.length != 10)
				{
				mensaje("completo","es");
				retornar(idc);							
			}
			else {
			  if (!numerico(banco) || !numerico(sucursal) ||
				  !numerico(dc) || !numerico(cuenta)){
				mensaje("formato","es");
				retornar(ibanco);
				retornar(isucursal);					  					  	
				retornar(idc);
				retornar(icuenta);
				  	}				
			  else {
			  	//alert(obtenerDigito("00" + banco + sucursal));
			  	//alert(obtenerDigito(cuenta));
				if (!(obtenerDigito("00" + banco + sucursal) ==
					  parseInt(dc.charAt(0))) || 
					!(obtenerDigito(cuenta) ==
					  parseInt(dc.charAt(1))))
					  {
					mensaje("dc","es");
					retornar(idc);					  					  	
				  	} 
				else
				  return;
			  }
			}
		}
}
 
function numerico(valor){
  cad = valor.toString();
  for (var i=0; i<cad.length; i++) {
    var caracter = cad.charAt(i);
	if (caracter<"0" || caracter>"9")
	  return false;
  }
  return true;
}
 
function obtenerDigito(valor){
  valores = new Array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6);
  control = 0;
  for (i=0; i<=9; i++)
    control += parseInt(valor.charAt(i)) * valores[i];
  control = 11 - (control % 11);
  if (control == 11) control = 0;
  else if (control == 10) control = 1;
  return control;
}
 
 
function validaNif2(c1,c2)
{	
	var campo1=(document.getElementById(c1).value);
	var campo2=(document.getElementById(c2).value);	  
  
	if (campo1 == ""  || campo2 == ""){
	  return;
	}else{		
		var dni=campo1+campo2;  
		var numero = dni.substr(0,dni.length-1);
		var let = dni.substr(dni.length-1,1);
		numero = numero % 23;
		var letra='TRWAGMYFPDXBNJZSQVHLCKET';
		letra=letra.substring(numero,numero+1);  
		if (letra!=let)   
		{
			mensaje("dni","es");	
			retornar(c2);			
		}
	}
}
 
function validaCif2(c1,c2)
{	
	var campo1=(document.getElementById(c1).value);
	var campo2=(document.getElementById(c2).value);	  
  
	if (campo1 == ""  || campo2 == ""){
	  return;
	}else{
		//alert("Cif "+campo1+" "+campo2);
		
		var texto=campo1+campo2; 
        var pares = 0; 
        var impares = 0; 
        var suma; 
        var ultima; 
        var unumero; 
        var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I"); 
        var xxx; 
         
        texto = texto.toUpperCase(); 
         
        var regular = new RegExp(/^[ABCDEFGHKLMNPQS]\d\d\d\d\d\d\d[0-9,A-J]$/g); 
         if (!regular.exec(texto)) 
			{
				mensaje("cif","es");
				retornar(control.id);		
			}
		 
              
         ultima = texto.substr(8,1); 
 
         for (var cont = 1 ; cont < 7 ; cont ++){ 
             xxx = (2 * parseInt(texto.substr(cont++,1))).toString() + "0"; 
             impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1)); 
             pares += parseInt(texto.substr(cont,1)); 
         } 
         xxx = (2 * parseInt(texto.substr(cont,1))).toString() + "0"; 
         impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1)); 
          
         suma = (pares + impares).toString(); 
         unumero = parseInt(suma.substr(suma.length - 1, 1)); 
         unumero = (10 - unumero).toString(); 
         if(unumero == 10) unumero = 0; 
          
         if ((ultima == unumero) || (ultima == uletra[unumero])) 
             return true; 
         else 
             {
				mensaje("cif","es");
				retornar(c2);		
			 }
 
    } 		
		
		
	
}
 
function validaNie2(c1,c2)
{	
	var campo1=(document.getElementById(c1).value);
	var campo2=(document.getElementById(c2).value);	  
  
	if (campo1 == ""  || campo2 == ""){
	  return;
	}else{
		//alert("Nie "+campo1+" "+campo2);		
 
			var a=campo1+campo2; 		
			var temp=a.toUpperCase();
			var cadenadni="TRWAGMYFPDXBNJZSQVHLCKET";
			var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
			var posicion=0;
			var letra=" ";
 
			//Residente en España	
			if (a.length==9)
			{
				if (temp.substr(0,1)=="X")
				{
					var temp1=temp.substr(1,7);
 
					posicion = temp1 % 23; /*Resto de la division entre 23 es la posicion en la cadena*/
					letra = cadenadni.substring(posicion,posicion+1);
					if (!/^[A-Za-z0-9]{9}$/.test(temp))
					{ 
						mensaje("nie","es");
						retornar(c2);	
					}
					else
					{ 
						//Tiene los 9 dígitos, comprobamos si la letra esta bien
						var temp1=temp.substr(1,7);
						posicion = temp1 % 23; /*Resto de la division entre 23 es la posicion en la cadena*/
						letra = cadenadni.charAt(posicion);
						var letranie=temp.charAt(8);
						if (letra != letranie){			
							mensaje("nie","es");
							retornar(c2);			
						}				
					}
				}
				else
				{
					mensaje("nie","es");
					retornar(c2);		
				}		
			}else if (a.length==14){//14 caracteres, los 2 primeros letras
				var temp1=temp.substr(0,2);
				if (isAlphabetic(temp1)!=true)	
					{
					mensaje("nie","es");
					retornar(c2);	
					}
			}
			else
			{
					mensaje("nie","es");
					retornar(c2);		
 
			}
 
	}
}
 

Validar fecha formato dd/mm/aaaa incluido si el año es bisiesto

<p>Ejemplo de validación de fechas con formato <b>dd/mm/aaaa</b></p>

<small>Fecha:</small>
<br>
<input type=“text” name=“fecha” size=“15” onblur=“testFecha(this)”>

<script>
function testFecha(control){ if (control.value.length==0) return;

if (!validaFecha(control.value)) { alert(“Fecha Invalida”); control.focus(); }else{ alert(“ok”); }
}

function validaFecha(Cadena){ var Fecha= new String(Cadena) var RealFecha= new Date() var Ano= new String(Fecha.substring(Fecha.lastIndexOf(”/”)+1,Fecha.length)) var Mes= new String(Fecha.substring(Fecha.indexOf(”/”)+1,Fecha.lastIndexOf(”/”))) var Dia= new String(Fecha.substring(0,Fecha.indexOf(”/”)))

// Valido el año if (isNaN(Ano) || Ano.length<4 || parseFloat(Ano)<1900){ return false; } // Valido el Mes if (isNaN(Mes) || parseFloat(Mes)<1 || parseFloat(Mes)>12){ return false; } // Valido el Dia if (isNaN(Dia) || parseInt(Dia, 10)<1 || parseInt(Dia, 10)>31){ return false; } if (Mes==4 || Mes==6 || Mes==9 || Mes==11) { if (Dia>30) { return false; } } if (Mes==2 && Dia > 28 ) { bisiesto=((Ano % 4 == 0) && ((Ano % 100 != 0) || (Ano % 400 == 0))); if (bisiesto && Dia<=29) return true; else return false; } return true; }

Pasar todos los elementos de texto de un formulario a mayusculas

 
function aMayusculas (f) {
	  for (i=0; i<f.elements.length; i++) {
	      if (f.elements[i].type!='hidden') {
	        if (f.elements[i].type=='text') 
	        	f.elements[i].value=f.elements[i].value.toUpperCase();        
	      }
	  }
	}
 

javascript cambiar Eventos

tipod.onchange=new Function(“javascript:prueba()”);

dupli.onclick=function() {open(enlace,null)};

Bloques de la misma altura con jquery

Yo había creado bloques de la misma altura con jquery (es muy sencillo) pero esta función lo hace de modo genérico (se le pasa la lista de elementos).

Visto en Sentido Web

 
function equalHeight(group) {
    tallest = 0;
    group.each(function() {
        thisHeight = $(this).height();
        if(thisHeight > tallest) {
            tallest = thisHeight;
        }
    });
    group.height(tallest);
}
 

Ejemplo de llamada:

 
$(document).ready(function() {
    equalHeight($(".recent-article"));
    equalHeight($(".footer-col"));
});
 

Generar funciones de accesibilidad de manera rapida en un formulario

El codigo que posteo es uno que yo uso, tal vez no sea la mejor solucion mas quiero compartirla con Uds., para mi se ha vuelto una manera muy efectiva y rapida de dar cierta usabilidad a mis formularios sin tanta complicacion ademas de aplicar javascript no intrusivo

 
  function prepararFormulario()
{		
	var txts=document.getElementsByTagName("INPUT");
	for(var i=0;i<txts.length;i++)
	{	var txt=txts[i];
	
		txt.onfocus=function()
		{	this.className='focused'; 
			if(this.type=="text")
			{
				/*aun me falta terminar la implementacion, estoy buscando un 
codigo crossbrowser que al obtener el foco 
seleccione el texto de la caja de texto*/
			}
		}
		
		txt.onblur=function()
		{	this.className=''; }
		
		/////////////////////////////////////////
		//Los navegadores basados en estandares automaticamente crean el Objeto Event
		//, a pesar que este no sea definido de manera explicita
		//asi en esta funcion, al enviar e, FF automaticamente genera un objeto Event.
		txt.onkeypress=function(e)
		{ 						
				if(!e)var e=window.event;			
				var xId=new String;
				xId=this.id;
				//(!document.all) ? alert(e.srcElement) : alert(e.target);
				switch(xId.substring(0,3))
				{	
					case 'txt':					
						return soloCadenas(e);
						break;				
					case 'num':
						return soloNumeros(e);					
						break;
					case 'fec':
						return soloFechas(e);					
						break;
					case 'fic':
						return soloFechas_Input(e);					
						break;		
				}
		}
			
 
	}
	
	var sels=document.getElementsByTagName("SELECT");
	for(var i=0;i<sels.length;i++)
	{	var sel=sels[i];
		sel.onfocus=function()
		{	this.className='focused'; }
		
		sel.onblur=function()
		{	this.className=''; }
	}	
}
 

Funcion en JavaScript que recoge los valores de un formulario

ya se que esto mismo lo hace el SUBMIT de un formulario cuando se envia por metodo POST, pero en caso quieran enviarlo por metodo GET esto puede serles de ayuda sobre todo si van utilizar Ajax.

 
  function getValues(obj)
{
	var getstr="";
	for (var i=0; i<obj.childNodes.length; i++) {
		if (obj.childNodes[i].tagName == "INPUT") {
			if (obj.childNodes[i].type == "text") {
			   getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
			}
			if (obj.childNodes[i].type == "checkbox") {
			   if (obj.childNodes[i].checked) {
				  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
			   } else {
				  getstr += obj.childNodes[i].name + "=&";
			   }
			}
			if (obj.childNodes[i].type == "radio") {
			   if (obj.childNodes[i].checked) {
				  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
			   }
			}
		 }   
		 if (obj.childNodes[i].tagName == "SELECT") {
			var sel = obj.childNodes[i];
			getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
		 }
		 
		 if(obj.childNodes[i].tagName=="FIELDSET" || obj.childNodes[i].tagName=="DIV" || obj.childNodes[i].tagName=="UL" || obj.childNodes[i].tagName=="LI")
		 {
			getstr+=getValues(obj.childNodes[i]);
		 }
	}	
	 return getstr;
}
 

Como observan el resultado es un String, de tal manera que uds pueden llamar esta funcion y en su funcion o metodo que llaman una pagina mediante Ajax pueden enviar asi

 
//Donde obj es el elemento padre del formulario
var params=getValues(obj)
getPagina(url + params)
 

Cargar combos con Ajax

No se uds. pero antes hacer combos que se cargaran donde uno dependia de otro era algo engorroso, claro que habia varios metodos, se podia usar iframes o recargar la pagina, aunque sinceramente ninguno de esos me parece muy bueno, hace poco necesite hacer algo asi para una web app, asi que le digo como lo hice, no se si sera lo mejor pero talvez a alguien le sirva.

Por si acaso esto esta hecho con PHP y MySQL

Primero tenemos nuestro formulario

Esas dos son clases donde la primera permite manejar la Base de datos, esa clase la postee hace un tiempo aqui.( http://www.recortex.com/recorte/177 )
Todo lo que viene a continuacion esta dentro de un solo archivo formulario.php

 
<?php 	
        include("./cls/clsManejaBD.php"); 
	include("./cls/clsUbicacion.php"); 
?>
 
 
<form action="./actions/registrar_evento.php" method="post" id="frmRegistraEvento">
<fieldset><label>Departamento</label>
         <?php /*instancio la clase y llamo a un metodo de la misma que va a generar la lista de departamentos*/ 
               $u=new Ubicacion(); $u->Generar_Combo_Departamentos(); 
         ?>
</fieldset>
<fieldset><label>Provincia</label><div id="cmbProvincia">Provincia</div></fieldset>
<fieldset><label>Distrito</label><div id="cmbDistrito">Distrito</div></fieldset>
<fieldset><label>Fecha</label><input type="text" name="txtFecha" value="dd/mm/aaaa" size="10" maxlength="10"/></fieldset>
<fieldset><label>Tema</label><input type="text" name="txtTema" value="tema tratado"/></fieldset>
<fieldset><label>Publico</label><input type="text" name="txtPublico" value="publico atendido"/></fieldset>
<fieldset><label>Lugar</label><input type="text" name="txtLugares" value="lugar"/></fieldset>
<fieldset><label>Cantidad</label><input type="text" name="txtCantidad" value="0"/></fieldset>
<fieldset><label>N&deg; de Informe</label><input type="text" name="txtInforme" value="N&deg; de Informe" /></fieldset>
<fieldset><label>Fecha de Informe</label><input type="text" name="txtFecha_Informe" value="dd/mm/aaaa" size="10" maxlength="10"/></fieldset>
<fieldset><input type="button" name="aceptar" value="aceptar"/> <input type="button" name="borrar" value="borrar"/></fieldset>
</form>
 

Cuando se vea esta pagina el navegador reemplazara donde aparece nuestro codigo php por esto

 
<select id="departamento" onchange="cambio(id,2);">
<option> Amazonas</option>
<option> Ancash </option>
<option> Arequipa </option>
...
</select>
 

ahora viene la parte de javascript, yo tengo una funcion denominada cambio() dentro de la cual valido el destino y que pagina cargar, lo que sigue pueden ponerlo en la misma pagina o en un archivo js aparte

 
function cambio(id, dest)
{	var index=document.getElementById(id).selectedIndex;
	var url;
	var detino;
       /*de acuerdo al combo que cambie carga el dato del siguiente combo
combo "departamento" carga "provincias" y "provincias" carga "distritos" */
	if(dest==2)
		{ 
			url="cargar_provincias.php?idDep=" + (index+1); /*a la variable se le suma 1 ya que el indice del combo empieza en 0*/
			destino='cmbProvincia';
		}
		
	if(dest==3)
		{ 	url="cargar_distritos.php?idProv=" + (index+1) + "&idDep=" + (document.getElementById('departamento').selectedIndex + 1);
			destino='cmbDistrito';
		}
		
	cargarDatos(url, "action", destino);//esta es una funcion que llama al ajax
}
 

Bueno aunque yo tengo separado en archivos diferentes en este caso vamos a decir que tanto la funcion de arriba como la funcion para ajax se encuentra en el mismo archivo

 
function cargarDatos(pagina, dir, target)	
{	var page = false;
	var target;
	var url;
	url="./" + dir + "/" + pagina;
    if (window.XMLHttpRequest)
    {
        // Si es Mozilla, Safari etc
        page = new XMLHttpRequest ();
    } else if (window.ActiveXObject)
    {
        // pero si es IE
        try 
        {
            page = new ActiveXObject ("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            // en caso que sea una versi&oacute;n antigua
            try
            {
                page = new ActiveXObject ("Microsoft.XMLHTTP");
            }
            catch (e)
            {
            }
        }
    } 
    else
	{	return false;}
	
    page.onreadystatechange = function ()
    {
        // funci&oacute;n de respuesta
		if (page.readyState != 4) {
			document.getElementById (target).innerHTML= '<div id="loader"><img src="./img/ajax-loaderC.gif" > Cargando datos...</div>';
		}else{
			//window.setTimeout("cargarpagina(page);",2000); //pretendemos demorar la respuesta unos segundos
			cargarpagina(page, target);
		} 		
    }
	
    page.open ('GET', url, true); // asignamos los m&eacute;todos open y send
    page.send (null);	
 
}
 
function cargarpagina(page, target)
{
    if (page.readyState == 4 && (page.status == 200 || window.location.href.indexOf ("http") == - 1))
		document.getElementById (target).innerHTML = page.responseText;
}
 

por ultimo debemos tener nuestros archivos php, yo los tengo en una carpeta llamada “action”
aqui le muestro el que carga los distritos para que se den una idea

 
<?php
	include("../cls/clsManejaBD.php"); 
	include("../cls/clsUbicacion.php"); 
	$id_departamento=$_GET['idDep'];
	$id_Provincia=$_GET['idProv'];
	$u=new Ubicacion(); $u->Generar_Combo_Distritos($id_departamento,$id_Provincia);
?>
 

por ultimo no se uds. pero a veces me ha pasado a mi que en tutoriales como estos no ponen el codigo completo php y uno se pierde, asi que aqui les pongo el codigo de la clase Ubicacion.

getSQL($query);		
		return $rs;
	}
	
	function Generar_Combo_Departamentos()
	{ $rs=$this->ListarDepartamentos();
		if (mysql_num_rows($rs)>0)
			{	echo "<select id='departamento' onchange='cambio(id,2);'>";				
	 			while($data=mysql_fetch_array($rs,MYSQL_NUM))
				{	echo  "<option> $data[1] </option>";			
				}
				echo "</select>";
 			}	
		else
			{	echo "no existen datos para mostrar";
			}
		mysql_free_result($rs);	
	}
	
	function ListarProvincias($fk_departamento)
	{	
		$dbm=new ManejaBD;
		$query="SELECT idProvincia, nombre FROM Provincia where fk_Departamento=$fk_departamento";		
		$rs=$dbm->getSQL($query);			
		if($rs)
		{	return $rs;
		}
		
	}
	
	function Generar_Combo_Provincias($idDepartamento)
	{ $rs=$this->ListarProvincias($idDepartamento);
		if (mysql_num_rows($rs)>0)
			{	echo "<select id='provincia' onchange='cambio(id,3);'>";				
	 			while($data=mysql_fetch_array($rs,MYSQL_NUM))
				{	echo  "<option> $data[1] </option>";			
				}
				echo "</select>";
 			}	
		else
			{	echo "no existen datos para mostrar";
			}
		mysql_free_result($rs);	
	}
	
	function ListarDistritos($fk_departamento, $fk_provincia)
	{	
		$dbm=new ManejaBD;
		$query="SELECT DISTINCT idDistrito, nombre FROM Distrito where fk_Departamento=$fk_departamento and fk_Provincia=$fk_provincia";		
		$rs=$dbm->getSQL($query);			
		if($rs)
		{	return $rs;
		}
		
	}
	
	function Generar_Combo_Distritos($idDepartamento, $idProvincia)
	{ $rs=$this->ListarDistritos($idDepartamento, $idProvincia);
		if (mysql_num_rows($rs)>0)
			{	echo "<select id='distrito'>";				
	 			while($data=mysql_fetch_array($rs,MYSQL_NUM))
				{	echo  "<option> $data[1] </option>";			
				}
				echo "</select>";
 			}	
		else
			{	echo "no existen datos para mostrar";
			}
		mysql_free_result($rs);	
	}

	
	function Ubicacion_Evento($idEvento)
	{	
		$dbm=new ManejaBD;
		$query="SELECT direccion FROM Ubicacion where fk_Evento=$idEvento";		
		$rs=$dbm->getSQL($query);			
		if($rs)
		{	return $rs;
		}
		
	}
	
	
}

A pedido de un usuario ahi esta cargar_distritos.php

 
 
	include("../cls/clsManejaBD.php"); 
	include("../cls/clsUbicacion.php"); 
	$id_departamento=$_GET['idDep'];
	$id_Provincia=$_GET['idProv'];
	$u=new Ubicacion(); $u->Generar_Combo_Distritos($id_departamento,$id_Provincia);
 

aunque un poco largo espero sea entendible _

Ejecutar una función del Padre

Codigo en JavaScript para ejecutar una función de una Página padre al momento de cerrar la ventana hijo
 
  window.opener.parent.funcionDePadre();
  window.close();
 
Proyecto: Juanjo Navarro, 2006 - Diseño: Albin