OVH Cloud OVH Cloud

créer un attribut ?

4 réponses
Avatar
BMR
Bonjour,

Je voudrais contrôler un formulaire dont je n'ai pas la maîtrise : je ne
peux pas modifier son code HTML. Je veux y ajouter "onsubmit='return
controler_formulaire()';" en rajoutant un attribut à la balise <form>.
Malheureusement, la fonction DHTML createAttribute() semble réservée au
document. Ca sert à quoi ? je me le demande...

Comment faire ?

BMR

4 réponses

Avatar
ASM

Bonjour,

Je voudrais contrôler un formulaire dont je n'ai pas la maîtrise : je ne
peux pas modifier son code HTML. Je veux y ajouter "onsubmit='return
controler_formulaire()';" en rajoutant un attribut à la balise <form>.
Malheureusement, la fonction DHTML createAttribute() semble réservée au
document. Ca sert à quoi ? je me le demande...


même si tu fais :
truc = window.open('leformulaire.htm');

control = 'return opener.controler_formulaire()';
truc.document.forms[0].createAttribute("submit",control);

(bien que je ne sois pas certain que createAttribute soit le bon choix)

bien qu'il me semble qu'il faudrait etre certain du chargemt du formulaire
avant de lui coller des nouveaux attributs

et bien sûr
- controler_formulaire() est déclaré dans page appelante
- fait référence à truc.document.forms[0]
}
var elmt='', ok=true;
with(truc.document.forms[0]) {
if(nom=='') { okúlse; elmt='nom'; }
else if(prenom=='') { okúlse; elmt='prenom'; }
if(!ok) { alert('Veuiller remplir champ '+elmt); elmt.focus(); }
}
return ok;
}

car sinon cela voudrait dire que tu colles du JS au formulaire apres chargement
(le navigateur va en tenir compte ?)

--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************

Avatar
BMR


Bonjour,

Je voudrais contrôler un formulaire dont je n'ai pas la maîtrise : je ne
peux pas modifier son code HTML. Je veux y ajouter "onsubmit='return
controler_formulaire()';" en rajoutant un attribut à la balise <form>.
Malheureusement, la fonction DHTML createAttribute() semble réservée au
document. Ca sert à quoi ? je me le demande...



même si tu fais :
truc = window.open('leformulaire.htm');

control = 'return opener.controler_formulaire()';
truc.document.forms[0].createAttribute("submit",control);

(bien que je ne sois pas certain que createAttribute soit le bon choix)

bien qu'il me semble qu'il faudrait etre certain du chargemt du formulaire
avant de lui coller des nouveaux attributs

et bien sûr
- controler_formulaire() est déclaré dans page appelante
- fait référence à truc.document.forms[0]
}
var elmt='', ok=true;
with(truc.document.forms[0]) {
if(nom=='') { okúlse; elmt='nom'; }
else if(prenom=='') { okúlse; elmt='prenom'; }
if(!ok) { alert('Veuiller remplir champ '+elmt); elmt.focus(); }
}
return ok;
}

car sinon cela voudrait dire que tu colles du JS au formulaire apres chargement
(le navigateur va en tenir compte ?)



Ben bien sûr que tu peux modifier une page après son chargement. Par
exemple, tu peux t'amuser à modifier le nom du formulaire :

var mes_forms = document.getElementsByTagName("form");
mes_forms[0].attributes["name"].nodeValue = "mon_formulaire";

Mon pb est que je ne peux pas ajouter de nouvel attribut. Et je ne
comprends pas ce que vient faire une popup dans ta proposition.

Bref, la nuit porte conseil et la solution semble plutôt du côté de :
document.forms[0].onsubmit=fonction;

mais il faudrait pouvoir mettre document.forms[0].onsubmit= return
fonction; et je ne suis pas sûr que ça marche... Je vais essayer.

Merci quand même de m'avoir répondu.

BMR


Avatar
ASM



Bonjour,

Je voudrais contrôler un formulaire dont je n'ai pas la maîtrise : je ne
peux pas modifier son code HTML.




Je comprends donc que tu l'ouvres dans :
- un pop-up
- une frame
- ou un iframe
sinon ... je vois pas comment tu lui envoies des attributs ou quoique ce soit
apres chargement.

Si tu peux rajouter tes instructions de modifs sur la page du formulaire
pourquoi ne pas faire les corrections direct ?

Je veux y ajouter "onsubmit='return
controler_formulaire()';" en rajoutant un attribut à la balise <form>.
Malheureusement, la fonction DHTML createAttribute() semble réservée au
document. Ca sert à quoi ? je me le demande...




[ couic la réponse qui ne te sied ]

Ben bien sûr que tu peux modifier une page après son chargement. Par
exemple, tu peux t'amuser à modifier le nom du formulaire :


Je te parles de rajout de code JS executable apres chargement
(de fonctions et non pas de joujoux avec les noms ou attributs)
et (je n'ai pas essayé) m'étonnerai que ça marche.

et de toute la maniere il faut que le code de modif soit :
- sur la page (donc il y est avant chargement)
- sur une autre fenêtre qui est en liaison (pour modif après chargement)

var mes_forms = document.getElementsByTagName("form");
mes_forms[0].attributes["name"].nodeValue = "mon_formulaire";


à force de se plonger dans le DOM nodesque on finit par bien compliquer

document.forms[0].attributes["name"].nodeValue = "mon_formulaire";
ou (à l'ancienne)
document.forms[0].name = "mon_formulaire";

Mon pb est que je ne peux pas ajouter de nouvel attribut.


comment vérifies-tu ça ?
(c'est complètement invisible, juste un jeu virtuel avec les éléments des
différents tableaux créés par le navigateur pour notre grand amusement.
Sauf à y avoir une fonction de test tu ne peux le savoir )

Et je ne
comprends pas ce que vient faire une popup dans ta proposition.


cf + haut

C'est assez incompréhensible que
tu ne puisses modifier le code d'un formulaire
mais que
tu puisses en ajouter (pour le modifier)

Bref, la nuit porte conseil et la solution semble plutôt du côté de :
document.forms[0].onsubmit=fonction;

mais il faudrait pouvoir mettre document.forms[0].onsubmit= return
fonction; et je ne suis pas sûr que ça marche... Je vais essayer.


ben, si : document.forms[0].onsubmit=fonction;
marche
pourquoi pas : document.forms[0].onsubmit = return fonction;

Mais puisqu'il semble que tu peux tripoter la page
pourquoi ne pas modifier direct ? :

<form onsubmit="return mafonction();" blabla >


à ce que je crois,
- document.forms[0].onsubmit
ne réagit pas de la même façon que :
- <form onsubmit="
dans le cas où c'est la touche entree qui submite le formulaire
le onsubmit est ignoré si je ne me trompe pas


--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************



Avatar
BMR
En fait, le formulaire est intégré dans un CMS (SPIP) dont je voudrais
autant que possible éviter de modifier le code (ça m'oblige à tenir à
jour une liste de fichiers modifiés, à contrôler et réintégrer à chaque
nouvelle version du CMS). La modif que je veux faire tient dans un
template, ce qui évite le pb précédent.

J'ai trouvé la fonction que je recherchais : setAttribute(attribut,
valeur) qui rajoute un attribut au noeud ou le modifie s'il existe déjà.
Ca fonctionne sous IE et les navigateurs Gecko. Mais j'ignore si cette
fonction (ou plutôt méthode) est prise en compte par Safari et les
navigateurs KDE...

Merci et a+

BMR





Bonjour,

Je voudrais contrôler un formulaire dont je n'ai pas la maîtrise : je ne
peux pas modifier son code HTML.





Je comprends donc que tu l'ouvres dans :
- un pop-up
- une frame
- ou un iframe
sinon ... je vois pas comment tu lui envoies des attributs ou quoique ce soit
apres chargement.

Si tu peux rajouter tes instructions de modifs sur la page du formulaire
pourquoi ne pas faire les corrections direct ?


Je veux y ajouter "onsubmit='return
controler_formulaire()';" en rajoutant un attribut à la balise <form>.
Malheureusement, la fonction DHTML createAttribute() semble réservée au
document. Ca sert à quoi ? je me le demande...





[ couic la réponse qui ne te sied ]


Ben bien sûr que tu peux modifier une page après son chargement. Par
exemple, tu peux t'amuser à modifier le nom du formulaire :



Je te parles de rajout de code JS executable apres chargement
(de fonctions et non pas de joujoux avec les noms ou attributs)
et (je n'ai pas essayé) m'étonnerai que ça marche.

et de toute la maniere il faut que le code de modif soit :
- sur la page (donc il y est avant chargement)
- sur une autre fenêtre qui est en liaison (pour modif après chargement)


var mes_forms = document.getElementsByTagName("form");
mes_forms[0].attributes["name"].nodeValue = "mon_formulaire";



à force de se plonger dans le DOM nodesque on finit par bien compliquer

document.forms[0].attributes["name"].nodeValue = "mon_formulaire";
ou (à l'ancienne)
document.forms[0].name = "mon_formulaire";


Mon pb est que je ne peux pas ajouter de nouvel attribut.



comment vérifies-tu ça ?
(c'est complètement invisible, juste un jeu virtuel avec les éléments des
différents tableaux créés par le navigateur pour notre grand amusement.
Sauf à y avoir une fonction de test tu ne peux le savoir )


Et je ne
comprends pas ce que vient faire une popup dans ta proposition.



cf + haut

C'est assez incompréhensible que
tu ne puisses modifier le code d'un formulaire
mais que
tu puisses en ajouter (pour le modifier)


Bref, la nuit porte conseil et la solution semble plutôt du côté de :
document.forms[0].onsubmit=fonction;

mais il faudrait pouvoir mettre document.forms[0].onsubmit= return
fonction; et je ne suis pas sûr que ça marche... Je vais essayer.



ben, si : document.forms[0].onsubmit=fonction;
marche
pourquoi pas : document.forms[0].onsubmit = return fonction;

Mais puisqu'il semble que tu peux tripoter la page
pourquoi ne pas modifier direct ? :

<form onsubmit="return mafonction();" blabla >


à ce que je crois,
- document.forms[0].onsubmit
ne réagit pas de la même façon que :
- <form onsubmit="
dans le cas où c'est la touche entree qui submite le formulaire
le onsubmit est ignoré si je ne me trompe pas