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

È stato utile?

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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top