Question

Dans ASP.NET WebForms et ASP 3 (ASP classique), je suis tombé sur une question où vous désignez votre formulaire soumettre bouton « soumettre » serait « casser des choses ». Voici le rendu HTML:

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

Je dis « casser des choses » parce que je ne sais pas exactement pourquoi ou ce qui est arrivé. Mais les symptômes sont généralement que en appuyant sur le bouton d'envoi parfois n'a rien fait dire qu'il n'a pas fonctionné. Mais parfois, il a fait le travail.

En fait, je viens de construire un page test rapide avec le code ci-dessous, et a bien fonctionné soumission:

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

Mais , dans le passé, ce problème a surgi, et renommer le bouton toujours fait le symptôme disparaître.

Alors, ne importe quel HTML / HTTP / savoir expert du navigateur d'une raison pour laquelle la mise id = "soumettre" sur un bouton Soumettre causerait des problèmes?

EDIT

commentaire SO semble suggérer « soumettre » est un mot-clé réservé. Mais pourquoi les attributs « id » ou « nom » intefere avec cela? Et comment ce mot-clé « réservé » se mis en œuvre de telle manière que provoquerait des conflits?

merci encore

Était-ce utile?

La solution

L'élément form a une méthode appelée submit, mais a également des éléments de forme dans la forme en tant que membres.

Si vous avez un bouton sous la forme nommée submit, vous pourriez accéder à l'aide document.form1.submit. Cependant, comme c'est le même nom que la méthode submit, il n'y a plus aucun moyen d'accéder à cette méthode. Si vous utilisez la méthode pour soumettre le formulaire, qui ne fonctionnera plus.

Par exemple, si vous avez un bouton qui soumet le formulaire en utilisant Javascript, cela ne fonctionne pas:

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

Lorsque le bouton tente d'utiliser la méthode submit, il hériterez une référence à lui-même (et un message d'erreur lorsque vous essayez de l'appeler, comme le bouton est une fonction).

Autres conseils

Je vous invite à rester à l'écart de tous les mots réservés du DOM javascript. utiliser « mon » devant tout ce que vous définissez, ou $, ou quelque chose d'autre qui est clairement ne va pas entrer en conflit avec les mots réservés que vous pouvez accidentellement juste surcharge et causer des ravages.

Le code-behind qui est généré qui vous permet de lier des événements à l'objet sont nommés en fonction des valeurs spécifiées.

Il suffit d'utiliser onsubmit si le problème dans la soumission du formulaire

<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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top