Perché nominare il pulsante di invio del modulo HTML "invia" interrompe le cose?
-
22-08-2019 - |
Domanda
Nei moduli Web ASP.NET e ASP 3 (ASP classico), mi sono imbattuto in un problema per cui denominare il pulsante di invio del modulo "invia" "interromperebbe le cose".Di seguito è riportato l'HTML renderizzato:
<input type="submit" name="Submit" value="Submit" id="Submit" />
Dico "rompi le cose" perché non sono sicuro esattamente del perché o di cosa sia successo.Ma i sintomi di solito erano che premere il pulsante di invio a volte non faceva nulla, ad es.semplicemente non ha funzionato.Ma a volte funzionava.
In effetti, ho appena creato un rapido test di una pagina con il codice seguente e l'invio ha funzionato correttamente:
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtTest" runat="server" />
<asp:Button ID="Submit" runat="server" Text="Submit" />
</div>
</form>
Ma, in passato si è verificato questo problema e rinominare il pulsante ha sempre fatto scomparire il sintomo.
Quindi, qualche esperto di HTML/HTTP/browser conosce qualche motivo per cui l'impostazione di id="invia" su un pulsante Invia potrebbe causare problemi?
MODIFICARE
Questo Quindi commento sembra suggerire che "invia" sia una parola chiave riservata.Ma perché gli attributi "id" o "name" interferirebbero con questo?E come viene implementata questa parola chiave "riservata" in modo tale da causare conflitti?
grazie ancora
Soluzione
IL form
l'elemento ha un metodo denominato submit
, ma ha anche gli elementi del modulo come membri.
Se hai un pulsante nel modulo denominato submit
, puoi accedervi utilizzando document.form1.submit
.Tuttavia, poiché è lo stesso nome di submit
metodo, non è più possibile accedere a quel metodo.Se utilizzi il metodo per inviare il modulo, non funzionerà più.
Ad esempio, se hai un pulsante che invia il modulo utilizzando Javascript, non funziona:
<input type="button" name="submit" onclick="this.form.submit();" value="try" />
Quando il pulsante tenta di utilizzare il file submit
metodo, otterrà invece un riferimento a se stesso (e un messaggio di errore quando si tenta di chiamarlo, poiché il pulsante non è una funzione).
Altri suggerimenti
Vi invito a stare lontano da tutte le parole riservate di JavaScript del DOM. usare la "mia" di fronte a tutto ciò che si definisce, o $, o qualcos'altro che non è chiaramente intenzione di entrare in conflitto con le parole riservate che si possono accidentalmente solo sovraccaricare e causare il caos.
Il code-behind che viene generato che permette di associare gli eventi per l'oggetto sono denominate in base ai valori specificati.
Basta usare onsubmit se il problema nel modulo di presentazione
<form id="form1" runat="server" onsubmit="this.submit()">
<div>
<asp:TextBox ID="txtTest" runat="server" />
<asp:Button ID="Submit" runat="server" Text="Submit" Type="submit"/>
</div>
</form>