2011-10-17 29 views
5

Tengo un formulario que se basa en javascript para hacer toda la validación del formulario del lado del cliente. Este formulario se envía a través de JavaScript si todos los campos están llenos correctamente en lugar de utilizar un estándar botón "enviar":Enviar formulario sin Javascript

<button name="button" type=button onclick="validateReqFields('mForm', 'username, password, compPassword, firstName, lastName');">Register</button> 

document[formName].submit(); 

Si el cliente tiene JavaScript desactivado, toda la validación de formularios se realiza del lado del servidor (su de hecho se realizó de nuevo independientemente, pero eso en realidad no importa). El problema radica en usar un botón con un tipo de botón en lugar de enviar. Funciona perfecto con javascript, pero ¿cómo puedo evitar esto cuando JavaScript no está disponible? Si uso un botón de enviar junto con el javascript, envía el formulario con cada botón y no funciona correctamente.

+1

Debe usar '' input type = "submit" value = "Submit" onclick = "validateReqFields (....)" /> ' – Pav

+1

Por favor vea mi c omment a continuación. No puedo hacer esto. Lo dice claramente en la pregunta. – ryandlf

Respuesta

2

Utilice un botón de enviar en lugar del botón "botón", y luego haga que su función validateReqFields devuelva falso si el formulario no es válido.

Luego saque el formulario enviado de validateReqFields si lo desea.

De esta manera

  • Si el formulario es válido, entonces el botón de clic se burbuja y el formulario se envía
  • Si el formulario no es válido, entonces el javascript, se cancelará el botón haga clic
  • Si javascript está deshabilitado, luego se enviará al servidor como una alternativa
+0

Esto funciona perfectamente. ¡Gracias! – ryandlf

+0

¿Cuál es la ventaja de cambiar el elemento 'button' por' input [type = submit] '? – alex

+0

@alex el formulario no se enviará en un elemento de botón. –

4

Cambia el atributo type a submit.

<button name="button" type="submit" ... /> 
+0

No puedo hacer esto porque no permite que mi javascript evite que la página se envíe y, por lo tanto, inutiliza mi javascript porque la página envía todos los datos y solo usa la validación del lado del servidor. – ryandlf

+2

@ryandl: Debe usar 'event.preventDefault()'. – alex

+1

Yay para downvotes inexplicables :) – alex

-2

Utilice los <noscript></noscript> etiquetas para definir un botón de enviar "normal" cuando javascript está deshabilitado.

-1

Puede usar la etiqueta <noscript> y encapsular el código anterior con el tipo de botón como enviar. Si el cliente tiene js, el código dentro del noscript será ignorado.

+0

Entonces, en el caso de que javascript esté deshabilitado y la página use las etiquetas noscript, ¿no tendré entonces dos botones en la página? – ryandlf

+1

Si va a downvote las respuestas "use' noscript' ", al menos explique por qué cree que no es útil. – alex

Cuestiones relacionadas