Frage

In ASP.NET Webforms und ASP 3 (Classic ASP), ich auf eine Frage kam, wobei das Formular Schaltfläche „Eintragen“ Eintragen Benennung würde „die Dinge brechen“. Im Folgenden finden Sie die gerenderte HTML:

<input type="submit" name="Submit" value="Submit" id="Submit" />

Ich sage „brechen Dinge“, weil ich nicht sicher bin, genau, warum oder was passiert ist. Aber die Symptome waren in der Regel, dass die Taste manchmal tat nichts vorlegen drücken heißt es nicht nur nicht funktioniert. Aber manchmal hat es funktioniert.

In der Tat, ich baute nur einen schnellen eine Seite Test mit dem folgenden Code, und einreichenden hat gut funktioniert:

<form id="form1" runat="server">
<div>
    <asp:TextBox ID="txtTest" runat="server" />
    <asp:Button ID="Submit" runat="server" Text="Submit" />
</div>
</form>

Aber , in der Vergangenheit wurde dieses Problem aufgetreten, und die Umbenennung der Taste immer das Symptom gehen gemacht weg.

So hat jeder HTML / HTTP / Browser Expertenwissen aus irgendeinem Grund, warum Einstellung id = "submit" auf einem Submit-Button Probleme verursachen würde?

Bearbeiten

SO Kommentar scheint „Eintragen“ vorschlagen ist ein reserviertes Schlüsselwort. Aber warum sollte die „id“ oder „name“ Attribute intefere mit diesem? Und wie funktioniert das „reserviert“ Schlüsselwort in einer solchen Art und Weise implementiert bekommen, die zu Konflikten führen würde?

Dank wieder

War es hilfreich?

Lösung

Das form Element hat eine Methode namens submit, sondern hat auch die Formularelemente in Form als Mitglieder.

Wenn Sie auf eine Schaltfläche in Form namens submit haben, könnten Sie es document.form1.submit mit zugreifen. Wie jedoch, dass die gleichen Namen wie die submit Methode ist, gibt es keine Möglichkeit mehr, dass die Methode für den Zugriff. Wenn Sie die Methode verwenden Sie das Formular einreichen, das wird nicht mehr funktionieren.

Zum Beispiel, wenn Sie auf eine Schaltfläche, die das Formular mit Javascript vorträgt, das nicht funktioniert:

<input type="button" name="submit" onclick="this.form.submit();" value="try" />

Wenn die Taste, um die submit Methode zu verwenden versucht, es wird stattdessen eine Referenz auf sich selbst bekommen (und eine Fehlermeldung beim Versuch, es zu nennen, wie die Taste keine Funktion).

Andere Tipps

Ich möchte Sie bitten, weg reservierten Worte des DOM von allen Javascript zu bleiben. verwenden „mein“ vor allem, was Sie definieren, oder $, oder etwas anderes, das eindeutig nicht mit den reservierten Wörtern in Konflikt stehen wird, die Sie versehentlich nur überlasten und verursachen Chaos.

Der Code-behind, dass generiert, die Sie Ereignisse zum Objekt basieren auf den Werten von Ihnen angegebenen Namen binden können.

Verwenden Sie einfach onsubmit, wenn das Problem in Form Vorlage

<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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top