IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

checkboxes et objet javascript


Sujet :

JavaScript

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Par défaut checkboxes et objet javascript
    Bonjour à tous,

    J'ai un formulaire avec des checkboxes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    <input type="checkbox" value="1" name="blocs_id[]">
    <input type="checkbox" value="2" name="blocs_id[]">
    <input type="checkbox" value="3" name="blocs_id[]">
    ...
    Je récupère l'ensemble du formulaire avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var mon_contenu_form = $("#mon_form").serializeArray();
    // qui donne
    mon_contenu_form = [{name:'input_name', value:'input_value'}, ...]
    Mais, je dois au final avoir un objet avec cette structure pour transférer vers le backend:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    obj['input_name'] = input['input_value']
    Donc je tente ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var datas = Object();
    for(var i in mon_contenu_form)
    {			
    	var key = mon_contenu_form[i].name;
    	datas[key] = mon_contenu_form[i].value;
    }
    Ce qui marche très bien pour tous les éléments du formulaire sauf pour les checkboxes qui sont sensées être regroupées dans un objet. Les variables des cb s'écrasent sur elles mêmes
    Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mon_contenu_form['blocs_id[]'] = 3

    Hors je veux ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mon_contenu_form['blocs_id'] = [1,2,...]
    Quelqu'un aurait-il une idée de comment réaliser cela?
    Merci d'avance

  2. #2
    Membre expérimenté Avatar de MaitreKaio
    Profil pro
    Freelance Java / Web / Mobile
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance Java / Web / Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut
    My 2 cents: pourquoi ne pas utiliser l'attribut id en lieu et place de name.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Par défaut
    Citation Envoyé par MaitreKaio Voir le message
    My 2 cents: pourquoi ne pas utiliser l'attribut id en lieu et place de name.
    Parce que les valeurs ne seront pas envoyées lors de la soumission du formulaire si les name ne sont pas existants.

    Concernant le problème initial, sans parler du var datas = Object() qui ne veut rien dire (on utilise en général var datas = {}), c'est tout à fait normal que les valeurs s'ajoutent, elles ont le même name ! Les tableaux n'existent pas dans les attributs HTML. HTML est un langage de markup, pas de programmation

    Dans ton cas, il est mieux que chaque input ait un name unique.

    Je changerais également la partie backend afin qu'elle marche même si javascript n'est pas activé, c'est-à-dire qu'elle fonctionne avec les valeurs retournées par $.serializeArray.

    Pourquoi ? Parce que le site doit marcher même si javascript n'est pas activé.

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Par défaut
    Salut

    Citation Envoyé par F.Margaine Voir le message
    Parce que les valeurs ne seront pas envoyées lors de la soumission du formulaire si les name ne sont pas existants.
    Exact

    Citation Envoyé par F.Margaine Voir le message
    Concernant le problème initial, sans parler du var datas = Object() qui ne veut rien dire (on utilise en général var datas = {})
    Bin Object = {} c'est juste une façon de le marquer. Généralement j'utilise aussi {}


    Citation Envoyé par F.Margaine Voir le message
    Dans ton cas, il est mieux que chaque input ait un name unique.
    Pas bien, mon programmeur backend veux du []. Je vais pas me battre avec lui

    Citation Envoyé par F.Margaine Voir le message
    Je changerais également la partie backend afin qu'elle marche même si javascript n'est pas activé, c'est-à-dire qu'elle fonctionne avec les valeurs retournées par $.serializeArray.
    Pourquoi ? Parce que le site doit marcher même si javascript n'est pas activé.
    Dans un monde idéal oui... mais pas de javascript pas de site dans mon cas.

    Pour la solution, la voici:
    J'ai fait ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    $.each(dataForm, function()
    {
    	if (datas[this.name])
    	{
    		if (!datas[this.name].push)
    		{
    			datas[this.name] = [datas[this.name]];
    		}
    		datas[this.name].push(this.value || '');
    	}
    	else
    	{
    		datas[this.name] = this.value || '';
    	}
    });
    Ou directement utiliser le plugin prévu à cet effet http://css-tricks.com/snippets/jquer...-form-to-json/

    voilou

Discussions similaires

  1. [POO] Fonction Affichage OBjet Javascript!
    Par lekunfry dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 20/07/2007, 06h28
  2. [POO] reférence à un objet javascript
    Par Giansolo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/05/2007, 09h53
  3. [POO] contenu d'un objet javascript
    Par wtfu dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/08/2006, 11h12
  4. [POO] Comment acceder a un objet javascript instancie dans une page mere
    Par herbert dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 20/07/2006, 19h34
  5. [POO] objet javascript et html
    Par jakouz dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 20/04/2006, 17h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo