È davvero necessaria un'azione sui moduli?
-
29-10-2019 - |
Domanda
Qui dice che è richiesto
http://www.w3schools.com/tags/att_form_action.asp .
Ma vedo che i moduli vengono inviati anche se non specifico un attributo azione e il modulo viene inviato alla pagina corrente che è esattamente ciò che voglio.
Soluzione
Il requisito è solo per standard .È perfettamente possibile fare quello che vuoi su una pagina e non seguire gli standard.Le cose potrebbero non essere visualizzate o funzionare correttamente se lo fai, ma probabilmente lo faranno.L'obiettivo è seguirli e l'idea è che se li segui, la tua pagina sempre funzionerà;non devi preoccuparti di nulla.
Sì, il modulo è obbligatorio per avere un attributo di azione in HTML4.Se non è impostato, il browser probabilmente utilizzerà lo stesso metodo che gli fornisce una stringa vuota.Dovresti davvero impostare action=""
che è HTML4 perfettamente valido, segue gli standard e ottiene lo stesso esatto risultato.
In HTML5, puoi effettivamente specificare un'azione sul pulsante di invio stesso.Se non ce n'è uno, utilizza l'azione del form e se non è impostato, il valore predefinito è la stringa vuota (nota che non puoi impostare esplicitamente l'azione su una stringa vuota in HTML5).
Altri suggerimenti
Puoi ottenere il comportamento che desideri seguendo le specifiche lasciando vuota l'azione (poiché è relativa, vuota indica la pagina corrente):
<form action="" ...>
Come menzionato da bazmegakapa, la specifica HTML5 non sembra richiedere l'attributo action
:
Gli attributi action e formaction content, se specificato , devono avere un valore che sia un URL valido non vuoto potenzialmente circondato da spazi. [enfasi aggiunta]
È interessante notare che questo significa che in HTML5, <form action="">
non è valido, ma non è chiaro se per funzionare è necessario un modulo senza un'azione (invia alla pagina corrente).
Tecnicamente si tratta di una violazione della specifica HTML 4, ma tutti i browser invieranno al mittente della risposta se non viene specificata alcuna azione.Sono d'accordo che non è un'idea intelligente fare affidamento su di esso, ma funziona.
MODIFICA: come mi è stato fatto notare che questa domanda è contrassegnata come HTML 5: In HTML 5 elencano l'attributo di azione come non più richiesto: http://www.w3schools.com/html5 / att_form_action.asp che è conforme alle specifiche HTML 5.
// avviso di resurrezione del thread
Per estendere la risposta di Animuson ...
Se dopo che tutti gli attributi button formaction
e form action
sono stati valutati, se "action" ancora valuta "stringa vuota", allora dalla sezione specifica HTML5.2 4.10.21.3 il punto 8 afferma:
Se action è una stringa vuota, lascia che action sia l'URL del documento del file documento del modulo.
quando si tratta di inviare il modulo, che è quello che volevi.