11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai une petite question qui me turlupine ...

J'ai voulu effectuer une validation automatique de mon formulaire, en Jquery, avec un .change() sur un select.

J'ai donc tout logiquement essayé la méthode classique avec un $('#monForm').submit().

Or impossible de le faire fonctionner ... J'ai essayé avec la méthode classique en Javascript, impossible aussi ...

En cherchant un peu je suis tombé sur ça :
var myForm = document.forms.id_of_form;
var emptyForm = document.createElement('form');
emptyForm.submit.apply(myForm);


J'ai donc essayé cette méthode (qui fait très bricolage je vous l'accorde) et là, ça fonctionne ...

Du coup, j'aimerais bien comprendre pourquoi la méthode classique n'a pas fonctionné et qu'il faut absolument bidouiller avec un formulaire créé à la volée pour faire fonctionner le submit.

Dons si quelqu'un sait, je serais ravi qu'il m'éclaire sur ce point car là, je suis largué !

Merci d'avance
Modifié par simon.netc (31 May 2011 - 09:56)
Tu lances bien le submit quand le DOM est prêt ?

Et est ce que tu as bien nommé ton form ?

A+
Modifié par Vincent_nk (30 May 2011 - 02:49)
Oui le DOM est prêt quand je lance l'auto-submit.

Mon form a bien un ID. D'ailleurs le code que je vous ai donné (et qui utilise l'ID) fonctionne bien.

J'ai aussi essayé d'ajouter un name sur le form et de l'utiliser, mais en vain.
Ben purée, fallait le savoir ... En gros, pour les anglophobes, Javascript n'arrive pas à valider le formulaire si un des éléments du formulaire a pour id ou pour name « submit »

Eh ben de mon côté, mon bouton submit avait l'id ET le name en « submit » ...

Du coup j'ai utilisé la méthode suggérée à la place de celle que j'utilisais, c'est à dire :
$('#submit').click()


Ça fonctionne à merveille.

Nouvelle question du coup : C'est un bogue de Javascript ou c'est voulu ?
simon.netc a écrit :
C'est un bogue de Javascript ou c'est voulu ?

C'est plutôt voulu, il me semble. Javascript n'aime pas qu'un même mot recouvre plusieurs choses. On peut le comprendre: une fonction, par exemple, n'est pas une variable et inversément. Il en va de même pour les mots réservés.

Tu peux aussi ne pas mettre "name='submit' ", ni "id='submit' " pour ton bouton et garder uniquement l'événement onclick.
Le problème c'est que j'ai besoin de l'ID pour de la mise en page.

Enfin, c'est pas grave, j'ai compris le problème (le plus important) et vous m'avez trouvé une parade relativement propre (le bonus), donc tout va bien Smiley smile
Vous lui donnez l'ID que vous voulez, du moment que ce ne soit pas "submit". C'est aussi simple que ça! Smiley cligne