4 votes

Pourquoi '$("#form")[0].reset();' fonctionne-t-il et '$("#form").reset();' pas ?

J'utilise la méthode de réinitialisation des formulaires comme suit dans mes pages web

$("#form")[0].reset();

Mais lorsque je l'utilise comme ci-dessous

$("#form").reset();

Je reçois un message d'erreur.

Pourquoi la première méthode fonctionne-t-elle et pas la seconde ?

Ma page fonctionne parfaitement. Mais j'aimerais en connaître la raison. La solution est partout. Mais aucune d'entre elles n'en décrit la raison.

Nota: J'ai vérifié h et il montre tant de réponses. Rien ne définit clairement la raison.

5voto

tadman Points 70178

La méthode de sélection de jQuery peut renvoyer plus d'un élément, il est donc préférable de renvoyer un tableau par souci de cohérence. Ce tableau est une enveloppe pour d'autres méthodes jQuery qui peuvent opérer sur cette sélection, mais la manipulation des fonctions DOM classiques nécessite de travailler sur un élément spécifique.

Vous pouvez le faire comme vous l'avez fait, avec [0] pour extraire le premier, ou vous pouvez itérer sur eux :

$('#form').each(function() { this.reset() });

4voto

daf Points 893

Parce que la reset() est un membre de l'élément HTML form :

https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/reset

Et non pas une méthode offerte par un objet jQuery, qui est une collection de 0 ou plusieurs éléments correspondant à votre sélecteur ( #form )

1voto

Arun Points 2226

Je pense que la simple raison est qu'il s'agit de faire travailler de force un javascript en utilisant la fonction Jquery

.reset() n'est pas une fonction native de Jquery. Il s'agit d'une fonction Javascript et nous l'utilisons de force à l'intérieur de la fonction Jquery

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X