2009-12-27 14 views
8

Tengo un formulario que necesita javascript para ser habilitado para la validación, ¿hay alguna manera de desactivar el botón de enviar cuando JavaScript está deshabilitado y advertir al usuario que lo habilite primero?desactivar el botón de enviar cuando JavaScript está deshabilitado

+7

La comprobación de integridad del lado del cliente de datos solo puede ser una comodidad para el usuario. No puede proporcionarle ninguna seguridad. Los clientes malintencionados pueden enviar cualquier dato que deseen. Realiza controles en el servidor. Entonces no tendrá que preocuparse de que el usuario tenga JS habilitado o no. – Quentin

+1

¿Hay alguna razón comercial para esto? Solo para su información (si es nuevo en esto), toda la validación hecha por JavaScript puede evitarse fácilmente: siempre debe validar los datos del formulario en el servidor. –

+0

razón para esto es que tengo múltiples formularios que calculan el precio en muchos artículos, cuando JavaScript está deshabilitado la validación no funciona (estoy usando el plugin jquery para validación), no funciona y cuando el usuario lo envía, el formulario enviará campos vacíos – datisdesign

Respuesta

24

Desactívelo de forma predeterminada y use JavaScript para habilitarlo.

<input type="submit" value="Submit" id="submitBtn" disabled /> 

<script type="text/javascript"> 
var _onload = window.onload || function() 
{ 
    document.getElementById('submitBtn').disabled = false; 
} 

_onload(); 
</script> 

De esta manera, si JavaScript está desactivado, entonces el botón también permanecerá deshabilitado.

versión de jQuery:

<script type="text/javascript"> 
$(function(){ 
    $('#submitBtn').attr('disabled', false); 
}); 
</script> 
+0

Gracias por su ayuda :) – datisdesign

+1

Solo tenga cuidado con la función '_onload', porque si la propiedad' window.onload' ha sido establecida previamente, su función * nunca * se ejecutará. En realidad, dado que el bloque 'script' se define después de la entrada, puede suponer que' getElementById' lo encontrará porque cuando se evalúa el script, la entrada ya está en el DOM ... – CMS

+1

@CMS Right. Por eso prefiero jQuery. –

2

No defina una acción de formulario HTML, sino más bien defina solo un controlador de evento onSubmit javascript. Si javascript no está habilitado, el onSubmit no se activará, pero como no hay acción de formulario, el botón de enviar tampoco hará nada.

También puede optar por hacer que la acción del formulario HTML vaya a una página de error que explique que javascript debe estar habilitado, de modo que el usuario tenga algún tipo de comentario.

Como alternativa, puede comenzar con el botón deshabilitado (como sugieren otros carteles). Si lo hace, también debería considerar un mensaje en el formulario que indique por qué el botón está deshabilitado. Elimine ese mensaje con javascript si está habilitado al mismo tiempo que vuelve a habilitar el botón.

0

Debido a deshabilitar un botón de programación en función del entorno y que le adviertan son ambas tareas en función de algún tipo de lenguaje de script (como JavaScript), la respuesta es no: -/

+0

Bueno, podría tenerlo deshabilitado por defecto y luego habilitarlo con JavaScript –

+0

¡bien! No pensé en eso, pero de todos modos, no soy un gran admirador de las dependencias de JavaScript ... – moritz

+0

es la pregunta de no depender de javascript? – Jon

5

tenerlo desactivado por defecto y si hay javascript, luego habilítalos.

+0

+1 esta es la sugerencia más fácil y sensata. – cletus

+0

Gracias cletus :) – johnnyArt

0

Se obtuvo una solución para habilitar parte. Para la parte de Alertas, puede usar una buena etiqueta antigua. (-:

<noscript> 
<H1> It Wont work w/o javascript. Please Enable</h1> 
</noscript> 
0

excusa la última contestación pero esto me hizo pensar acerca de cómo hacer frente a este ya que tengo un problema similar y me condujo hasta aquí Siempre debe programar su sitio sin javascript y añadirlo despues para mejorar. pero en mi caso usar cosas como lightbox se están utilizando como entrada, que si javascript está deshabilitado, no funciona bien (especialmente porque el mío pasa valores a su padre).

Mi sugerencia es que esperemos que tenga PHP habilitado, por lo que puede simplemente poner en la parte superior de su documento

<?php if (isset($_POST)) { 
    //redirect to page, or set a message variable saying "no results saved" 
    header('some_page'); 
    $message = "We've detected you do not have " . 
       "javascript enabled. No results saved"; 
} ?> 

partir de ahí, tendrá que configurar todos los botones en su página decir

<input name="button" id="button" type="submit" onclick="return false;" /> 

o más simplemente podría ir

<form name="my_form" id="my_form" method="post" action="" onclick="return false;" /> 

Espero que esto ayude!

Cuestiones relacionadas