2011-10-17 17 views
5

Ho un modulo che si basa su javascript per eseguire tutte le convalide del modulo lato client. Il modulo viene inviato tramite JavaScript se tutti i campi siano correttamente compilati anziché utilizzare uno standard pulsante "Invia":Invia modulo senza Javascript

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

document[formName].submit(); 

Se il cliente ha javascript disabilitato, tutte della convalida forma è fatto lato server (il suo effettivamente eseguito di nuovo a prescindere, ma che non importa davvero). Il problema sta nell'usare un pulsante con un tipo di pulsante invece di inviare. Funziona perfettamente con javascript, ma come faccio ad aggirare questo quando javascript non è disponibile? Se uso un pulsante di invio insieme a javascript, invia il modulo con ogni pressione di ciascun tasto e non funziona correttamente.

+1

Si dovrebbe usare il ' ' – Pav

+1

Si prega di consultare il mio c omment sotto. Non posso farlo. Lo afferma chiaramente nella domanda. – ryandlf

risposta

2

Utilizzare un pulsante di invio anziché il pulsante "button", quindi impostare la funzione validateReqFields false se il modulo non è valido.

Quindi estrarre il modulo di invio dai validateReqFields se lo si desidera.

In questo modo

  • Se il form è valido, quindi il pulsante click bolla e il modulo sarà presentare
  • Se il modulo non è valido, allora il javascript annullerà la scatto del tasto
  • Se javascript è disabilitato, quindi sarà inoltrato al server come fallback
+0

Funziona perfettamente. Grazie! – ryandlf

+0

Qual è il vantaggio di scambiare l'elemento 'button' con un' input [type = submit] '? – alex

+0

@alex il modulo non verrà inviato su un elemento del pulsante. –

4

Modificare l'attributo type su submit.

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

Non riesco a farlo perché non consente al mio javascript di impedire l'invio della pagina e rende quindi inutilizzabile la mia javascript perché la pagina viene inviata comunque e utilizza solo la convalida del server. – ryandlf

+2

@ andand: dovresti usare 'event.preventDefault()'. – alex

+1

Yay per i downvotes inspiegabili :) – alex

-2

Utilizzare i <noscript></noscript> tag per definire un-pulsante di invio "normale" quando JavaScript è disabilitato.

-1

È possibile utilizzare il tag <noscript> e incapsulare il codice precedente con il tipo di pulsante come Invia. Se il client ha js, il codice all'interno di noscript verrà ignorato.

+0

Quindi nel caso in cui javascript sia disabilitato e la pagina usi i tag noscript, non avrò quindi due pulsanti sulla pagina? – ryandlf

+1

Se si sta andando a downvotare le risposte "use' noscript' ", almeno spiegare perché pensi che non sia utile. – alex