Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/10/2008, 07:11
Avatar de Deschamps
Deschamps
 
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 7 meses
Puntos: 8
Mostrar botón desactivado al refrescar en Firefox

Buenas, compañeros.

Aunque tengo experiencia programando, prácticamente siempre ha sido con C/C++ en entornos de escritorio. No hace mucho me he animado a aprender PHP/Html/CSS, aunque he encontrado que para algunas cosas es necesario Javascript, como el caso que me ocupa: un formulario. No sé si lo que pregunto es una chorrada con solución evidente que no he sido capaz de ver, pero llevo tiempo intentando solucionarlo y no lo consigo, por lo que os agradecería alguna sugerencia.

El caso es que para ir aprendiendo y practicando estoy desarrollando mi propio sitio web desde cero, todo con mi propio código. En el formulario de "contacto" he decidido probar un sistema para evitar spam (muuuuy simple), solicitando al visitante que confirme un número. Si el número tecleado en los botones (que se muestran "desordenados") coincide con el generado previamente (que es una simple permutación de un rango), se activa el botón "Enviar". En caso contrario, el botón permanece desactivado.

Para abreviar: todo funciona perfectamente, pero mi problema es que tras teclear el número correcto y activar el botón Enviar, si el visitante actualiza la página (recargándola con F5 en Explorer o Ctrl+R en Firefox) querría que el botón volviese a estar desactivado. Pero mientras que con Explorer es así, con Firefox no lo consigo. El botón permanece activado. He probado definiendo eventos onblur para el formulario, o eventos onload para un Frameset, y alguna otr acosa... pero nada. Lo único que sí me funciona bien es un evento onload en el <body> del documento, llamando ahí al script borra_clave(). Pero la página no tiene acceso a esa sección, ya que la genero como módulo PHP y sólo contiene el contenido (valga la redundancia), generando las cabeceras y pies de página desde otro sitio.

Alguien podría por favor orientarme para conseguir que ese botón aparezca desactivado siempre que se recargue la página en Firefox?

No sé si será necesario el código, pero adjunto una versión simplificada por si fuera necesario:

Código PHP:
<h3>Comentario:</h3>

<form name="comenta" action="envia.php" method="post">
<p>
    <textarea name="mensaje" cols="40" rows="5"></textarea><br /><br />
    Teclea:
    <?php
        $comb 
"";
        
$nn range1,);
        
shuffle$nn ); //Permutación para clave mostrada
        
        
for( $i=0$i<3$i++ ) $comb .= $nn[$i];
        echo 
" <b>$comb</b><br /><br />"
        
        
shuffle$nn ); //Permutación para los botones
        
foreach ( $nn as $bn )
            echo 
            
"<input type='button' name='btn' value='$bn' 
            style='width:2em;' onclick='coloca_numero($bn)'>"
;
    
?>
    
    <input type="text" name="clave" readonly="readonly" size="3" value="">
    <input type="button" name="otravez" value="Borrar" onclick="borra_clave()"><br /><br />
    <input type="submit" name="palante" disabled="disabled" value="Enviar" />
</p>
</form>

<script type="text/javascript">
function borra_clave()
{
    document.comenta.clave.value = "";
    document.comenta.palante.disabled = true;
}

function coloca_numero( valor )
{
    var aux1 = document.comenta.clave.value;
    if (  aux1.length < 3 )
    {
        var aux2 = aux1 + valor;
        document.comenta.clave.value = aux2;
    }
    if ( document.comenta.clave.value == <?php echo $comb ?> )
        document.comenta.palante.disabled = false;
    else
        document.comenta.palante.disabled = true;
}
</script>
Gracias anticipadas y saludos.