Ver Mensaje Individual
  #25 (permalink)  
Antiguo 04/01/2010, 01:21
lennhix
 
Fecha de Ingreso: octubre-2009
Mensajes: 74
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: No carga mi javascript, ... !Mas claro!

Intentare explicarlo un poco mejor!

Bueno

Tengo la página principal. index.html que contiene :
* Incluye el jquery.
* el Objeto XMLHTTPRequest.
* funciones ( aquí dentro está el código para los combobox dependientes).

* Contiene el código para ver el botón y al pincharlo muestra la tabla con los combobox.

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2.  
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4.  
  5.         <script type='text/javascript' src='jquery.js'></script>
  6.  
  7.     <script type='text/javascript' src='objetoXMLHTTPRequest.js'></script>
  8.  
  9.         <script type='text/javascript' src='funciones.js'></script>
  10.  
  11.         <!-- Elemental -->
  12.  
  13. </head>
  14.  
  15. <div align="center">      
  16.  
  17. <div id="botonCalibres"><button type='button' onClick="mostrarCriterioCalibres()">Mostrar Calibres <img src="http://www.forosdelweb.com/f77/images/icons/listar.png" ></button></div>
  18.  
  19. <div id="mostrarComboBox"></div>
  20.  
  21. </div>
  22. </body>
  23. </html>

Hasta aquí todo va bien, si pincho el botón me muestra la tabla con los combobox.
Ahora mostrare la página donde está el código de los comobobox.

Código HTML:
Ver original
  1. <div align="center">  
  2.  
  3. <table width="584" border="0" align="center" cellpadding="0" cellspacing="0">
  4.  
  5.   <tr>
  6.  
  7.     <td width="584" height="28" align="center">
  8.  
  9.     <form name="formularioCalibres" method="GET" >
  10.  
  11.         <table border="0" align="center" cellpadding="0" cellspacing="0">
  12.  
  13.           <tr>
  14.  
  15.             <td colspan="4" align="left" class="titulo">Criterio Calibres</td>
  16.  
  17.             </tr>      
  18.  
  19.  
  20.  
  21.              <tr>            
  22.  
  23.          <td class="titulo"><B>Especie:</B></td>
  24.  
  25.             <td colspan="4" class="alt" align="left">
  26.  
  27.             <select name="especie" id="especie" style="width: 260px" onChange="pedirDatosCalibres()">
  28.  
  29.             <option value="0" selected="selected">Seleccionar Especie</option>
  30.  
  31. <?php
  32.  
  33.     $res = mysql_query("SELECT DISTINCT(id_especie) FROM criterio_calibres");
  34.  
  35.     $cant =  mysql_num_rows($res);
  36.  
  37.  
  38.  
  39.         if($cant>0){                       
  40.  
  41.             while($rs = mysql_fetch_array($res)){
  42.  
  43. ?>
  44.  
  45.     <option value="<?php echo $rs["id_especie"]?>"><?php echo $rs["id_especie"]?></option>
  46.  
  47. <?php  
  48.  
  49.             }
  50.  
  51.         }
  52.  
  53. ?>
  54.  
  55.  
  56.  
  57.             </select>
  58.  
  59.             </td>
  60.  
  61.         </tr>
  62.  
  63.             <td class="titulo"><B>Variedad:</B></td>
  64.  
  65.             <td colspan="4" class="alt" align="left">      
  66.  
  67.             <select id="variedad" name="variedad" style="width: 260px" onChange="pedirDatosCalibres()">
  68.  
  69.                 <option value="0" selected="selected">Seleccionar Variedad</option>
  70.  
  71.             </select>
  72.  
  73.            
  74.  
  75.         </td>
  76.  
  77.          </tr>
  78.  
  79.  
  80.  
  81.         <tr>
  82.  
  83.             <td class="titulo"><B>Productor:</B></td>
  84.  
  85.             <td colspan="4" class="alt" align="left">
  86.  
  87.             <select id="productor" name="productor" style="width: 260px" onChange="pedirDatosCalibres(),habilitarBotonAgregar(this.form),habilitarBotonEliminar(this.form)">
  88.  
  89.                 <option value="0" selected="selected">Seleccionar Productor</option>
  90.  
  91.             </select>
  92.  
  93.            
  94.  
  95.             </td>
  96.  
  97.             </tr>  
  98.  
  99.         <tr>
  100.  
  101.             <td class="titulo"><B>Etapa:</B></td>
  102.  
  103.             <td class="alt" align="left">
  104.  
  105.             <select id="etapa" name="etapa" style="width: 135px" onChange="pedirDatosCalibres()">
  106.  
  107.                 <option value="0" selected="selected">
  108.  
  109.                 <?php echo 'Seleccionar Etapa'; ?>
  110.  
  111.                 </option>
  112.  
  113.             </select>
  114.  
  115.             </td>          
  116.  
  117.     </form>
  118.  
  119.    </table>
  120.  
  121.   </td>
  122.  
  123.  </tr>
  124.  
  125.  
  126. <div id="resultado"></div>        
  127.  
  128. <div id="campos"></div>
  129.  
  130. <div id="modificar"></div>
  131.  
  132. </div>

Bueno esto es lo que no funciona. Pero si lo dejo en la página principal, sin el botón.
Osea que al entrar al index.html me muestre los combobox. Sin el botón. Funciona bien.

Ahora muestro el código ajax de los combobox dependientes.

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.  
  3.     $("select").change(function(){
  4.         // Vector para saber cuál es el siguiente combo a llenar
  5.         var combos = new Array();
  6.         //productor             //especie
  7.         //especie               //variedad
  8.         //variedad              //etapa
  9.         combos['especie']       = "variedad";
  10.         combos['variedad']      = "productor";
  11.         combos['productor']     = "etapa";     
  12.  
  13.         // Tomo el nombre del combo al que se le a dado el clic por ejemplo: especie
  14.         posicion = $(this).attr("name");
  15.         // Tomo el valor de la opción seleccionada
  16.         valor = $(this).val()
  17.                    
  18.         // Evaluó  que si es productor y el valor es 0, vacié los combos de Especie, Variedad y Etapa
  19.         if(posicion == 'especie' || valor==0){
  20.             $("#variedad").html('   <option value="0" selected="selected" style="width: 148px">Seleccionar Variedad</option>')
  21.             $("#productor").html('  <option value="0" selected="selected" style="width: 148px">Seleccionar Productor</option>')
  22.             $("#etapa").html('      <option value="0" selected="selected" style="width: 148px">Seleccionar Etapa</option>')
  23.            
  24.             $.post("consultasJS/criterioCalibres_js.php",{combo:$(this).attr("name"), id:$(this).val() },function(data){
  25.             $("#"+combos[posicion]).html(data);})
  26.         }
  27.         if(posicion == 'variedad' || valor==0){
  28.                         $("#productor").html('  <option value="0" selected="selected" style="width: 148px">Seleccionar Productor</option>')
  29.                         $.post("consultasJS/criterioCalibres_js.php",{combo:$(this).attr("name"), id:$(this).val() },function(data){
  30.                         $("#"+combos[posicion]).html(data);})
  31.         }
  32.         if(posicion == 'productor' || valor==0){
  33.                         $("#etapa").html('  <option value="0" selected="selected" style="width: 148px">Seleccionar Etapa</option>')
  34.                         $.post("consultasJS/criterioCalibres_js.php",{combo:$(this).attr("name"), id:$(this).val() },function(data){
  35.                         $("#"+combos[posicion]).html(data);})
  36.         }
  37.  
  38.     })             
  39. })

Y la función pedirDatosCalibres()

Código Javascript:
Ver original
  1. function pedirDatosCalibres(etapaRecibida){
  2.  
  3.     //Ocultamos el formulario de Ingresar Otro
  4.     ocultarCampos   = document.getElementById('campos');
  5.     ocultarCampos.style.display='none'; // Con este script, logramos mostrar los campos nuevamente.
  6.  
  7.     //Ocultamos el formuladio de Modificar
  8.     ocultarModificarVer = document.getElementById('modificar');
  9.     ocultarModificarVer.style.display='none';
  10.  
  11.     //Donde se mostrará el resultado
  12.     divResultadoGrilla      = document.getElementById('resultado');
  13.        
  14.    
  15.     //Tomamos el valor del Formulario Calibres
  16.     especie             = document.formularioCalibres.especie.value;
  17.     variedad            = document.formularioCalibres.variedad.value;
  18.     productor           = document.formularioCalibres.productor.value;
  19.     etapa               = document.formularioCalibres.etapa.value;
  20.     etapaRecibida       = etapaRecibida; // Recibo True o underfined , o si fuera de listaCriterio* Envio un valor de Etapa
  21.    
  22.     //Instanciamos el objetoAjax
  23.     ajax                = objetoAjax();
  24.     // Creamos una variable donde guarde un valor aleatorio, que nos sirve para engañar las cookies del navegador.
  25.     var miAleatorio=parseInt(Math.random()*99999999);
  26.     //Usamos el metodo GET
  27.     //Archivo que realizará la operacion
  28.     //listaCriterioCalibre.php
  29.     url = "consultasJS/listaCriterioCalibre.php?productor=" + productor + "&especie=" + especie + "&variedad=" + variedad + "&etapa=" + etapa + "&etapaRecibida=" + etapaRecibida;  
  30.     ajax.open("GET",url+ "&rand=" + miAleatorio,true);
  31.     ajax.onreadystatechange=function() {
  32.         if (ajax.readyState==4) {
  33.             //Mostrar resultados en esta capa y lo convertimos en HTML dentro de un DIV
  34.             divResultadoGrilla.innerHTML = ajax.responseText.tratarResponseText();
  35.         }else{
  36.             //Aquí es el proceso de espera y dejamos una imagen simulando la espera o el progreso.
  37.             divResultadoGrilla.innerHTML = '<img src="http://www.forosdelweb.com/f77/images/icons/carga.gif">';
  38.        
  39.         }
  40.     }
  41.     ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  42.     //Enviamos el valor null ya que ocupamos el metodo GET
  43.     ajax.send(null)
  44.  
  45. }


Bueno decir que no entra al
Código Javascript:
Ver original
  1. $("select").change(function(){
Al Seleccionar el primer combobox.

T_T

Eso es todo.

El script que me ha ofrecido Panino5001 funciona a la perfección, pero no entiendo porqué no funciona con el script de los combobox dependientes.

Espero que me hallan entendido :) Muchas gracias!