Comunidad de diseño web y desarrollo en internet online

Código js funciona en Mozilla, pero no en Chrome.

Citar            
MensajeEscrito el 27 Sep 2013 03:25 pm
Buenas tardes,

Tengo una aplicación que muestra una tabla de n elementos, y permite seleccionar uno solo de ellos mediante radio buttons. También tiene un botón que, al presionarlo, se ejecuta una función en javascript que trata de identificar cuál de ellos fue el seleccionado, y cuando lo encuentra, hace una petición AJAX.

El tema es que, cuando la tabla tiene solo un elemento posible a seleccionar, el código funciona en Mozilla Firefox, pero en Chrome no logra encontrar el elemento seleccionado.

Les paso el código:

Código :


// Funcion que procesa la solicitud de borrar una resolucion determinada.
function solicitudBorrado(){
  


        var elegido;
        var elem;
        
       
        // div donde se muestran los datos.
        divResultado = document.getElementById('resultado');
        // para cada radio button, se fija cual es el que está marcado,
/* una vez que encuentra cuál es el marcado, obtiene su valor, y lo parsea con split() 
para sacar los parametros necesarios (numero de acta, de resolucion y de expediente del documento
seleccionado)
 y lo almacena en la variable "elegido", para pasarla por parametro despues en el send() */
        var marcado=-1;
        if(document.form_baja.boton.length>1){
        for(i=0;i<document.form_baja.boton.length;i++){
            if(document.form_baja.boton[i].checked) {
                marcado=i;
            }
        }
      //  alert("El marcado es: " + marcado);
        elegido=document.form_baja.boton[marcado].value;
        elem=elegido.split('*');
        }
        else{
// ESTA ES LA PARTE QUE NO ANDA EN CHROME
        // EL CASO PARTICULAR EN EL CUAL HAY UN SOLO ELEMENTO DISPONIBLE PARA CHECKEAR
// CON EL RADIO BUTTON.
            if(document.form_baja.boton.checked) {
                elegido=document.form_baja.boton.value;
                elem=elegido.split('*');
            }
        }
        
        if(confirm("Esta seguro de que desea borrar la siguiente resolucion ? :\n nro. Acta: " + elem[0] + "\nnro. Resolucion: " + elem[1] + "\nnro. Expediente: "+ elem[2]+ " ?"))

        
{
        
        // Se realiza el request en forma de POST a baja.php
        ajax=objetoAjax();
        ajax.open("POST", "../baja/baja.php",true);
        ajax.onreadystatechange=function() {
     //la funcion responseText tiene todos los datos pedidos al servidor
            if (ajax.readyState==4) {
        //mostrar resultados en esta capa
      divResultado.innerHTML = ajax.responseText;
            }
       
        }
        
   ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
   //enviando los valores a registro.php para que inserte los datos
   ajax.send("botones=" + elegido);
        }
        else{
            return false;
        }
}



Leo sugerencias :D

Saludos y desde ya, muchas gracias :)

Por pablocarballo27

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 27 Sep 2013 06:22 pm
falto que colocaras el HTML, necesito saber si tu ID o tu name, estan correctos.

Saludos.

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox
Citar            
MensajeEscrito el 30 Sep 2013 03:18 pm
Este es el fragmento del HTML que muestra la tabla de documentos a seleccionar con radio buttons. Utiliza un archivo .php que imprime esa tabla y les paso el código del php también. Les paso los fragmentos porque el archivo completo es extenso y las demás partes no tienen que ver con el problema que tengo (facilita la lectura para ustedes).

Código HTML :


<h1 align="center">Listado de Resoluciones:</h1>
        <h2 align="center">Por favor, seleccione la resoluci&oacute;n a dar de baja, y luego haga click en el bot&oacute;n "Borrar"</h2>
      
   <form id="formulario" align="center" name="form_baja" action="">
        <div id="resultado" class="item-page" align="center" style="width: 100%;overflow: auto">
            <?php include('../busqueda/consulta.php');?>
        </div>
     <div align="center"><input align="center" name="Submit" type="submit" value="Borrar" onclick="solicitudBorrado(); return false;"></div>
  </form>
       <h2 align="center" class="footweb">Desarrollado por &Aacute;rea Web - Direcci&oacute;n Sectorial de Planificaci&oacute;n Educativa - CODICEN</h2>





Fragmento del php:

Código PHP :


<html>
    <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script language="JavaScript" type="text/javascript" src="../js/ajax2.js"></script>
</head>
<body>
    <div align="center" style="width:100%">
<table border=1 cellpadding="0" cellspacing="0" 
       summary="Esta tabla muestra las resoluciones que existen en el sistema." >
    
    <caption>Resoluciones</caption>
    
   <tr >
                <th align="center" style="width:5%">Elija Documento</th>
      <th align="center" style="width:10%">Acta</th>
      <th align="center" style="width:10%">Resoluci&oacute;n</th>
      <th align="center" style="width:20%">Expediente</th>
      <th align="center" style="width:35%">Descripci&oacute;n</th>
                <th align="center" style="width:10%">Fecha de Publicaci&oacute;n</th>
      <th align="center" style="width:10%">Archivo</th>
   </tr>
   
<?php
    
  while($row = mysql_fetch_array($sql)){
   echo "<tr style=\"height:70px\">";
        $ruta2=$row['ruta'];
        $expedientes=$row['expediente'];
        $expnuevo=str_replace(" ","!",$expedientes);
        $rutanueva= str_replace(" ","!",$ruta2);
        echo "<td><input type=\"radio\" name=\"boton\" value=".$row['acta']. "*" .$row['resolucion']. "*" .$expnuevo. "*" . $rutanueva."></input></td>";
     echo "<td align=\"center\">".$row['acta']."</td>";
     echo "<td align=\"center\">".$row['resolucion']."</td>";
     echo "<td align=\"center\">".$row['expediente']."</td>";
        
        $vocal=array("&aacute;","&eacute;","&iacute;","&oacute;","&uacute;");
        $vocalTilde=array("á","é","í","ó","ú");
        $reemplazo=str_replace($vocalTilde,$vocal,$row['descripcion']);
        
   echo "<td align=\"center\">".$reemplazo."</td>";
        echo "<td align=\"center\">".$row['fecha']."</td>";
   $ruta=$row['ruta'];
   echo "<td align=\"center\"><a href=\"$ruta\" target=\"_blank\">Ver Documento</a></td>";
     echo "</tr>";
  }
?>

</table>
        </div>



Saludos :D

Por pablocarballo27

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 01 Oct 2013 02:12 pm
ya vi por que no anda, a veces los navegadores tienen bug.. pero el principal error que muchos olvidan es que

los atributos "name" y "id" deben ser unicos.. esta linea provoca

Código PHP :

 echo "<td><input type=\"radio\" name=\"boton\" value=".$row['acta']. "*" .$row['resolucion']. "*" .$expnuevo. "*" . $rutanueva."></input></td>";

que tengas "n" cantidad de radio buttons con el nombre de "boton" y Chrome no sabe realmente a cual te estas refiriendo.

genera names dinamicos y en tu ciclo de comprobación también debes de considerar esos names.

ejemplo names_$i donde $i es un entero.

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox
Citar            
MensajeEscrito el 01 Oct 2013 07:11 pm
Muchas gracias !!

Al final utilicé en el javascript la función getElementsByName('boton'); para guardar en un arreglo los radio buttons, y recorrerlo después en busca del que está seleccionado, y ahora funciona en ambos navegadores. No tuve en cuenta eso que habías dicho.

Saludos :)

Por pablocarballo27

1 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.