2012-02-22 13 views
30

Qui si dice che è necessarioL'azione è davvero necessaria sui moduli?

http://www.w3schools.com/tags/att_form_action.asp

ma vedo che le forme vengono presentati, anche se io non specificare un attributo action, e la forma ottiene presentato alla pagina corrente che è esattamente quello che voglio.

+33

Nota: non fare affidamento su w3schools. Non sono una fonte affidabile. – kapa

+5

Tuttavia in questo caso w3schools è corretto su entrambe le specifiche HTML 4 e HTML 5. In HTML 4, lo elencano come richiesto (sebbene la maggior parte dei browser continui a funzionare senza di esso) e in html 5 sono elencati come non più necessari: http://www.w3schools.com/html5/att_form_action.asp – swannee

+0

Se pertinente, puoi inviare il modulo di invio su un iframe: http://stackoverflow.com/a/26380651/1695680 In tal modo non interrompere il comportamento di input del modulo e anche non ricaricare la pagina. – ThorSummoner

risposta

42

Il requisito è solo per gli 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 sarà sempre lavoro; non devi preoccuparti di nulla

Sì, il modulo è richiesto per avere un attributo di azione in HTML4. Se non è impostato, il browser probabilmente utilizzerà lo stesso metodo che fornisce una stringa vuota. Dovresti davvero impostare action="" che è perfettamente HTML4, segue gli standard e ottiene lo stesso risultato esatto.

In HTML5, è possibile specificare un'azione sul pulsante di invio stesso. Se non ce n'è uno, utilizza l'azione del modulo e, se non è impostato, imposta automaticamente la stringa vuota (nota che non è possibile impostare esplicitamente l'azione su una stringa vuota in HTML5).

+2

Un'altra nota, se si sceglie di omettere l'attributo action, sono quasi sicuro che per impostazione predefinita venga inviato alla stessa pagina. – clamchoda

+0

@Chris: ho detto che probabilmente lo fa. Non posso garantire per tutti i browser passati perché sinceramente non so cosa facevano i browser più vecchi. Se non è impostato, è davvero all'altezza del browser, ma credo che tutti si adatteranno a quell'azione. – animuson

+0

Non so come sia stato nel 2013 quando è stata scritta la risposta, ma attualmente in HTML5 action = "" è valido ... anche senza l'attributo action è ok – instead

5

Tecnicamente si tratta di una violazione delle specifiche HTML 4, ma tutti i browser invieranno al mittente della risposta se non viene specificata alcuna azione. Sono d'accordo che non è una buona idea affidarsi ad esso, ma funziona.

EDIT: Come è stato sottolineato a me che questa domanda viene etichettato come HTML 5: In HTML 5 elencano l'attributo di azione in quanto non è più necessario: http://www.w3schools.com/html5/att_form_action.asp che è in conformità con le HTML 5 spec.

+0

Violazione di quali specifiche? – kapa

+3

Non c'è nulla chiamato spec. HTML w3schools. w3schools non ha nulla a che fare con w3c e le specifiche HTML sono rilasciate e gestite da w3c. w3schools non è affatto ufficiale, è solo un sito con una serie di informazioni semi-tecniche e un buon SEO. La specifica HTML5 (che la domanda richiede) non viene sicuramente violata facendo ciò che l'OP chiede. Attacchi sempre persone che cercano di correggerti? Non trovo il tuo comportamento professionale. – kapa

+1

Non voglio rischiare che la tua testa esploda, ma la domanda non ha nulla a che fare con HTML4. Questo è tutto ciò che volevo dire. Semplicemente non voglio che i futuri visitatori trovino disinformazione. Non ho alcun problema con te se non che ti comporti da bambino. [HTML5 spec 4.10.3 The form element] (http://www.w3.org/TR/2011/WD-html5-20110525/forms.html#the-form-element) – kapa

12

Sembra the HTML4 spec requires it. Sospetto che alcuni browser facciano ciò che vuoi per "semplificare le cose". Non consiglio di farne affidamento. Dato che sei in comportamento indefinito, un browser potrebbe ragionevolmente decidere di non fare nulla quando il modulo viene inviato senza action.

È possibile ottenere il comportamento desiderato seguendo le specifiche lasciando l'azione vuoto (dal momento che è relativo, vuoto significa che la pagina corrente):

<form action="" ...> 

Come accennato dal bazmegakapa, le specifiche HTML5 doesn't seem to require the action attribute:

Gli attributi di azione e di contenuti FormAction, se specificato, deve avere un valore che è un URL non vuoto valido potenzialmente circondata da spazi. [enfasi aggiunta]

È interessante notare che questo significa in HTML5, <form action=""> non è valido, ma non è chiaro se è necessaria una forma senza un'azione da lavorare (presentare alla pagina corrente).

+1

La domanda ha un tag HTML5 e questa risposta parla di HTML4. – kapa

+2

@ bažmegakapa Invece di votare tutte le risposte, sarebbe più utile pubblicare la tua risposta con un link alle specifiche HTML5. Sono d'accordo con swannee sul fatto che l'intera "downvotare ogni risposta" invece di lasciare un commento (o modificare il suggerimento) è una cattiva forma. Le nostre risposte sono entrambe corrette, ma non così specifiche come volete (e siamo entrambi perfettamente disposti a migliorare le nostre risposte con maggiori informazioni). –

+1

Downvoted perché le risposte erano sbagliate e diffusione di disinformazione. Rimosso il mio downvote, aggiunto upvote, grazie. – kapa