Sujet: [Javascript] Encoder tous les paramètres d'un formulaire
30/10/2008 @ 11:15:17: zion: [Javascript] Encoder tous les paramètres d'un formulaire
J'ai un formulaire avec au moins 40 paramètres, paramètres qui peuvent varier au fil du temps, et je dois transmettre tous les paramètres à un script pour en récupérer le contenu.

Je suis fade, j'ai pas envie de réécrire le script 10 fois dans le temps, y a pas une fonction qui permet de générer l'URL comme si on submitait le formulaire avec tous ses params bien encodés toussa? :dawa:
30/10/2008 @ 12:24:25: Clandestino: [Javascript] Encoder tous les paramètres d'un formulaire
Les paramètres de ta form sont de quelle nature ?

Je demande ça parce que, si tous les éléments sont de même nature (ex : textfield ou hidden), rien de plus facile que de construire dynamiquement la querystring avec un document.form[].elements[].foreach(...)
30/10/2008 @ 12:26:34: zion: [Javascript] Encoder tous les paramètres d'un formulaire
Du texte, y a un paquet de trucs du genre

<input type="text" name="formular[plop]" value="%" />

et le mec remplace par ce qu'il veut, mais y a parfois des caractères spéciaux et faut tout encoder :sweat:
30/10/2008 @ 12:37:40: Clandestino: [Javascript] Encoder tous les paramètres d'un formulaire
Bon, alors que dis-tu d'une petite fonction comme :

  1. var cQueryString="url_to_pass.ext?dummy=0"
  2. var aFormObj=document.forms[0].elements; 
  3. aFormObj.forEach(fObject, function(fObject) { 
  4. if(fObject.type in ["text","textarea","button","hidden"]) { cQuesryString += "&" + fObject.name + "=" + fObject.value; } 
  5. else if(fObject.type == "checkbox") { cQuesryString += "&" + fObject.name + "=" + fObject.checked; } 
  6. else if(fObject.type == "select") { cQueryString += "&" + fObject.name + "=" + fObject.options[fObject.selectedIndex].value; } 
  7. location.href=cQueryString;


(A la louche et non débuggé, je préviens)
30/10/2008 @ 12:40:15: zion: [Javascript] Encoder tous les paramètres d'un formulaire
Que ton "fObject.options[fObject.selectedIndex].value" ne va pas encoder la valeur dans le input.

Si c'est un chiffre ou du texte ça ira, des caractères spéciaux ce sera dtc. J'ai déjà eut je ne sais combien d'emmerdes avec ça justement :sweat:
30/10/2008 @ 12:44:20: Clandestino: [Javascript] Encoder tous les paramètres d'un formulaire
Et tu ne peux pas ajouter un contrôle supplémentaire sur la form pour interdire l'utilisation de certains caractères, par une validation en temps réel (style : onChange, onBlur etc...) ?
30/10/2008 @ 12:51:55: Coyote: [Javascript] Encoder tous les paramètres d'un formulaire
quel caractères spéciaux zion ?
30/10/2008 @ 12:54:46: zion: [Javascript] Encoder tous les paramètres d'un formulaire
Clandestino> Benh non, pourquoi lui interdire, j'en ai vraiment besoin moi :oh:

Coyote> De mémoire j'avais des soucis avec les accents, les %, le sigle euro, etc, etc...
30/10/2008 @ 13:23:12: rfr: [Javascript] Encoder tous les paramètres d'un formulaire
function urlencode(str) {
return escape(str).replace('+', '+').replace(' ', '+').replace('*', '*').replace('/', '/').replace('@', '@');
}


Suffit de passer chaque valeur à la fonction urlencode.
30/10/2008 @ 13:25:58: rfr: [Javascript] Encoder tous les paramètres d'un formulaire
Donc:

  1. var cQueryString="url_to_pass.ext?dummy=0"
  2. var aFormObj=document.forms[0].elements; 
  3. aFormObj.forEach(fObject, function(fObject) { 
  4. if(fObject.type in ["text","textarea","button","hidden"]) { cQuesryString += "&" + fObject.name + "=" + urlencode(fObject.value); } 
  5. else if(fObject.type == "checkbox") { cQuesryString += "&" + fObject.name + "=" + fObject.checked; } 
  6. else if(fObject.type == "select") { cQueryString += "&" + fObject.name + "=" + urlencode(fObject.options[fObject.selectedIndex].value); } 
  7. }); 
  8. location.href=cQueryString;
30/10/2008 @ 13:31:00: berzemus: [Javascript] Encoder tous les paramètres d'un formulaire
Salut tout le monde.

La dernière fois que j'ai du faire ça j'ai simplement encodé le contenu des champs en base64.

Une autre solution serait d'en faire un joli objet (Json), de le sérialiser, l'encoder en base64, et de l'envoyer.

Le script quant à lui déserialize, dé-jsonise, et il à un joli tableau tout de suite prêt à l'emploi (après les vérifications de rigueur).
30/10/2008 @ 13:52:22: zion: [Javascript] Encoder tous les paramètres d'un formulaire
le base64 c'est une idée, je vais essayer la version rfr avant, si ça merde pourquoi pas en base64, mais pourquoi ils ont pas prévu une jolie fonction toute faite :tinostar:

:petrus:
30/10/2008 @ 14:09:27: Clandestino: [Javascript] Encoder tous les paramètres d'un formulaire
...je vais essayer la version rfr avant...


Et moi, je pue ? :boude:






:neowen:
30/10/2008 @ 14:13:12: zion: [Javascript] Encoder tous les paramètres d'un formulaire
Benh toi tu encodes pas :oh:

rfr il utilise ta solution et il encode :petrus:

mais on me dit que je peux pas toucher à ce serveur aujourd'hui, je suis puni ça consomme trop de ressources, ils en ont besoin :ddr555:
30/10/2008 @ 14:28:18: gizmo: [Javascript] Encoder tous les paramètres d'un formulaire
http://malsup.com/jquery/form/
:oh:
30/10/2008 @ 14:29:55: zion: [Javascript] Encoder tous les paramètres d'un formulaire
:petruslove:
14/11/2008 @ 12:12:11: zion: [Javascript] Encoder tous les paramètres d'un formulaire
J'ai mis en prod le script avec le jquery de gizmo, c'est sublimissime! :dawaaa:

Merci :smile:
14/11/2008 @ 12:19:01: max: [Javascript] Encoder tous les paramètres d'un formulaire
oui, il est sympa ce plugin, je l'ai utilisé pour quelques formulaires "pénibles" et ils ne l'étaient plus grâce à lui :smile:
Retour