Foros del Web » Programando para Internet » Javascript »

Mostrar botón desactivado al refrescar en Firefox

Estas en el tema de Mostrar botón desactivado al refrescar en Firefox en el foro de Javascript en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 30/10/2008, 07:11
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 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.
  #2 (permalink)  
Antiguo 30/10/2008, 09:00
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Mostrar botón desactivado al refrescar en Firefox

creoque si llamas al final del documento a la función borra_clave debería funcionar

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;
}
borra_clave();
</script>
Saludos
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
  #3 (permalink)  
Antiguo 30/10/2008, 09:14
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: Mostrar botón desactivado al refrescar en Firefox

En efecto. Ni me había planteado que pudiera solucionarlo de ese modo.
Mil gracias, compañero
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 10:51.