OVH Cloud OVH Cloud

Préremplissage d'un formulaire avec des paramètres récupérés dans l'URL

3 réponses
Avatar
romainjanvier
Bonjour =E0 tous,

Je souhaite faire un script qui permette d'initialiser les valeurs d'un
formulaire lorsqu'elle sont fournies dans l'URL. Concretement, mon
champ <input type=3D"text" name=3D"couleur"> sera d=E9j=E0 pr=E9-rempli si =
on
appelle http://www.pouetpouet.pt/mapage.htm?couleur=3Dbleu

J'ai d=E9j=E0 mon script, qui fonctionne partiellement :

<-------------------------------------------------------------------->
function initForm(){

// R=E9cupere la chaine de parametre
url =3D document.location.href.split("?")
parametres =3D url[1].split("&") ;

// Pour chaque parametre
for(i=3D0;i<parametres.length;i++){

champ =3D parametres[i].split("=3D") ;
alert("Le champ "+champ[0]+" est initialis=E9 =E0 "+champ[1]) ;
// Pour les champs text
document.recherche.elements[champ[0]].value =3D champ[1] ;
// Pour les champs select
document.recherche.elements[champ[0]].selectedIndex =3D
champ[1] ;
// Pour les champs radio
document.recherche.elements[champ[0]].checked =3D champ[1] ;
// Pour les champs checkbox
document.recherche.elements[champ[0]][champ[1]].checked =3D
true ;
}
}
<-------------------------------------------------------------------->

Donc je parcours mes donn=E9es et je fais les manip pour tous les types
de formulaire, peu importe que ca fonctionne ou pas !
Mais le soucis, c'est que lorsque que ca ne fonctionne pas (Impossible
dans change l'index s=E9lectionn=E9 d'un champ texte), mon script
s'arr=EAte.

Deux solutions : - Tester le type de mon champ pour savoir quelle
propri=E9t=E9 utiliser (Comment ??)
- G=E9rer les erreurs, et ne pas en tenir
compte, moins propre (Possible en Javascript ?)

Merci d'avance !!

3 réponses

Avatar
O.L.
Bonjour à tous,

Je souhaite faire un script qui permette d'initialiser les valeurs d'un
formulaire lorsqu'elle sont fournies dans l'URL. Concretement, mon
champ <input type="text" name="couleur"> sera déjà pré-rempli si on
appelle http://www.pouetpouet.pt/mapage.htm?couleur=bleu

J'ai déjà mon script, qui fonctionne partiellement :

<-------------------------------------------------------------------->
function initForm(){

// Récupere la chaine de parametre
url = document.location.href.split("?")
parametres = url[1].split("&") ;

// Pour chaque parametre
for(i=0;i<parametres.length;i++){

champ = parametres[i].split("=") ;
alert("Le champ "+champ[0]+" est initialisé à "+champ[1]) ;
// Pour les champs text
document.recherche.elements[champ[0]].value = champ[1] ;
// Pour les champs select
document.recherche.elements[champ[0]].selectedIndex > champ[1] ;
// Pour les champs radio
document.recherche.elements[champ[0]].checked = champ[1] ;
// Pour les champs checkbox
document.recherche.elements[champ[0]][champ[1]].checked > true ;
}
}
<-------------------------------------------------------------------->

Donc je parcours mes données et je fais les manip pour tous les types
de formulaire, peu importe que ca fonctionne ou pas !
Mais le soucis, c'est que lorsque que ca ne fonctionne pas (Impossible
dans change l'index sélectionné d'un champ texte), mon script
s'arrête.

Deux solutions : - Tester le type de mon champ pour savoir quelle
propriété utiliser (Comment ??)
- Gérer les erreurs, et ne pas en tenir
compte, moins propre (Possible en Javascript ?)

Merci d'avance !!


En y allant avec l'artillerie lourde et pas très propre, tu dois
pouvoir encadrer les différentes parties potentiellement plantable avec
un try{}catch{}, comme ça si une erreur survient le script continuera
puisque l'erreur aura été "traitée".

Exemple concret :

// Pour les champs text
try { document.recherche.elements[champ[0]].value = champ[1] ; }
catch(e) { }

etc, etc. pour les parties suivantes qui peuvent poser problème.

@+
Olivier

--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net

Avatar
romainjanvier
Merci pour la réponse.

Je ne savais pas que ce traitement d'erreur était possible en
Javascript (Quoiqu'il hérite de Java). J'ai testé, ca fonctionne
donc, et je m'en contenterais.

Merci encore.

Je vous donne le code corrigé

<-------------------------------------------------------------------->
function initForm(){

// Récupere la chaine de parametre
url = document.location.href.split("?")
parametres = url[1].split("&") ;

// Pour chaque parametre
for(i=0;i<parametres.length;i++){

champ = parametres[i].split("=") ;
//alert("Le champ "+champ[0]+" est initialisé à "+champ[1]) ;
// Pour les champs text
try{document.recherche.elements[champ[0]].value = champ[1]
;}catch (e){}
// Pour les champs select
try{document.recherche.elements[champ[0]].selectedIndex =
champ[1] ;}catch (e){}
// Pour les champs radio
try{document.recherche.elements[champ[0]].checked =
champ[1] ;}catch (e){}
// Pour les champs checkbox

try{document.recherche.elements[champ[0]][champ[1]].checked = true
;}catch (e){}
}
}
<-------------------------------------------------------------------->
Avatar
O.L.
Merci pour la réponse.

Je ne savais pas que ce traitement d'erreur était possible en
Javascript (Quoiqu'il hérite de Java). J'ai testé, ca fonctionne
donc, et je m'en contenterais.


Je crois que ça n'existe pas dans les "vieilles" versions de
JavaScript, je ne sais pas à partir de laquelle ça a été implémenté ...

@+

--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net