bystrano / formulaire_ajax

Un plugin SPIP pour ajaxifier les formulaires générés par Saisies
0 stars 0 forks source link

Système non générique #1

Closed phenix-factory closed 4 years ago

phenix-factory commented 8 years ago

Hello,

Ils ne fonctionne pas avec la saisie "mot". En faite il n'est pas du tout générique et ne fonctionne que pour les saisies qui ont été déclarée.

Je pense qu'une meilleurs méthode serai de faire un $("input, select, textarea") et ensuite d'ajouter des filtre :selected et :checked en fonction de this.type.

bystrano commented 8 years ago

Oui, ça vient du fait que je n'ai pas de système générique pour trouver la valeur d'une saisie en js. En attendant de trouver une solution pour ça (si c'est possible), il est possible d'ajouter ses propres fonctions. Voici par exemple comment j'ajoute une fonction pour une saisie custom checkbox_mots_avec_auteurs

 $('.formulaire_filtrer_journalistes').formulaireAjax({
   blocsAjax: ['listeJournalistes'],
   /* pas d'autosubmit pour les mobiles et tablettes */
   autoSubmit: (window.innerWidth > 850),
   /* Il faut expliquer au plugin comment calculer la valeur de nos
      saisies custom */
   calculValeurSaisie: {
     checkbox_mots_avec_auteurs: function (champ) {
       var inputs = $(champ).find('input'),
           valeur = [];

       inputs.each(function () {
         if ($(this).attr('checked') === 'checked') {
           valeur.push($(this).attr('value'));
         }
       });

       return valeur;
     }
   }
 });

Ces fonctions de calcul reçoivent en argument la saisie (le <li> ou la <div>…), et doivent retourner la valeur de la saisie (ici un tableau).

bystrano commented 8 years ago

Le nerf de la guerre est la fonction valeurs (https://github.com/bystrano/formulaire_ajax/blob/master/javascripts/jquery.formulaireAjax.js#L178) qui calcule les valeurs d'un formulaire.

Si tu trouves un remplacement générique qui passe les tests (spip.php?page=tests_js/formulaire_ajax sur un site avec le plugin), je merge sans réfléchir et t'offre un éclair au chocolat ! :-)