Page 1 sur 1

Les caractères illegaux

Posté : 31 déc. 2007, 13:44
par agité
Bonjour,

Après quelque recherche sur le net j'ai trouver un tableau AJAX auto extensible qui conviendrais parfaitement a ce que je voudrais ajouter sur mon site, mais voila apres test du script firebug me retourne l'erreur 'illegal character' a cette ligne :

Code : Tout sélectionner

params.css_id = params.css_id || ‘ajout_multi_articles’;
Pourtant j'ai recuperer le code depuis ce site :

http://case.oncle-tom.net/2007/06/26/ta ... avascript/

Et ca semble convenir a d'autres utilisateurs.

Est ce qu'il faut definir un type d'encodage pour le javascript ou les caracteres qu'il faut accepter ?

Posté : 31 déc. 2007, 14:22
par @rthur
Bonjour,

Vérifie que les guillemets simples en soi-réellement (= créées avec la touche 4 du clavier alphanumérique)

Posté : 31 déc. 2007, 15:23
par agité
Bonjour,

Vérifie que les guillemets simples en soi-réellement (= créées avec la touche 4 du clavier alphanumérique)
merci j'ai bien remplacé les caracteres par des simple quote ce qui donne :

Code : Tout sélectionner

/** * Transforme un tableau multi-lignes en un tableau mono-ligne mais auto-extensible * Renomme également les noms de champ en suivant un masque paramétrable ; par défaut article[] * * @usage articlesMultiRows([{css_id: ?, css_row_class: ?, check_inputs: ?}]) * @param {Object} params Objet contenant (ou pas) les paramètres de contrôle de la classe */ function articlesMultiRows(params) { this.row_number = 0; /* * Extension des paramètres par défaut */ var params = params || {}; params.css_id = params.css_id || ajout_multi_articles; params.css_row_class = params.css_row_class || article; params.check_inputs = params.check_inputs || input,select,textarea; /** * Initialise le tableau de données et accroche les méthodes dynamiques */ this.init = function(){ //aucun ID détecté, pas la peine de continuer plus loin if (!$(params.css_id)) { return false; } //on récupère les lignes, on enlève la première du tableau et on supprime les autres var rows = $(params.css_id).getElements('tr'+params.css_row_class); var row_first = rows.shift(); rows.removeElements(); rows = null; /* * On assigne lévènement aux champs paramétrés de la ligne * On place le focus sur le premier champ */ $ES(params.check_inputs, row_first).addEvent(blur, rowCheck); $(row_first).getElement(input).focus(); row_number = 1; /* * On écrit un petit message sympathique indiquant le fonctionnement du bazar * On le fait via JavaScript car un utilisateur sans JS ne pourrait justement pas suivre les infos * Il est placé juste avant le tableau */ new Element('p',{ class : message }).setHTML("Dès quun code article et une quantité sont saisis ci-dessous, <strong>une nouvelle ligne sajoute automatiquement</strong>.<br />Afin daccélérer votre saisie, <em>utilisez la touche de tabulation de votre clavier</em> pour passer dun champ à lautre. Vous verrez, cest facile et surtout efficace !").injectBefore(params.css_id); }; /** * Vérifie si la ligne a entièrement été complétée et le cas échéant, déclenche lajout de ligne */ this.rowCheck = function(){ var row = { inputs : 0, completed : 0, dom : $(this).getParent().getParent() }; $ES(params.check_inputs, row.dom).each(function(input){ //Un élément de plus … ++row.inputs; //… dont on vérifie sil est bien complété switch (input.getTag()) { case input: case textarea: if (input.value.clean()) { ++row.completed; } break; case select: if (input.selectedIndex >= 0 && input.selectedIndex < input.length) { ++row.completed; } break; } }); /* * Pour insérer une nouvelle ligne, on doit avoir : * - autant de champs complétés que de champs existants * - aucun élément suivant */ if (row.inputs === row.completed && !row.dom.getNext()) { rowInsert(row.dom); } }; /** * Insère une nouvelle ligne en clonant la dernière du tableau et la purgeant de ses valeurs * * @param {Object} row Noeud DOM correspondant à la ligne à cloner */ this.rowInsert = function( row ){ //On incrémente le nombre de lignes dispo //Ce numéro sert à changer les masques de nom de champ ++row_number; var row_clone = row.clone(); //Clonage de la ligne $ES('input[type=text],input[type=password],input[type=hidden],textarea', row_clone).setProperty('value', ''); $ES(params.check_inputs, row_clone).removeEvents('blur'); /* obligé car IE5+ clone aussi les évènements ... alors qu'il ne le devrait pas */ $ES(params.check_inputs, row_clone).addEvent('blur', rowCheck); /* oui oui, IE5+ ne rassignait pas cet évènement comme il fallait malgré ça */ //On remplace les noms des champs pour que permettre une utilisation des résultats $_POST $ES(params.check_inputs, row_clone).each(function(input){ input.name = input.name.replace(new RegExp('^'+params.css_row_class+'\[[0-9]+\]'), params.css_row_class+'['+row_number+']'); }); //Injection de la ligne, une fois tout le travail terminé row_clone.injectAfter(row); //Nettoyage, le clonage, ça salit row_clone = null; row = null; }; /* * Initialisation de la classe */ this.init(); } /* * Initialisation du tableau multi-lignes avec les options par défaut */ window.addEvent(domready, articlesMultiRows);
mais il m'indique que domready n'est pas definis et quand je le simple quote il me dis que addEvent n'est pas une fonction ...

je me demande pourquoi sur son site il passe des caracteres accentué qui ne marche pas au copier coller mais bon ...

Posté : 31 déc. 2007, 17:36
par @rthur
window.addEvent(domready, articlesMultiRows);
Compare avec l'original:
http://case.oncle-tom.net/2007/06/26/ta ... avascript/

Tu as encore un problème de guillemets (qui ont disparues cette fois-ci)...

Posté : 01 janv. 2008, 21:19
par Oncle Tom
Salut,

le copié/collé du code sous Wordpress est un peu problématique car il transforme les simple et double-quotes en apostrophes et guillemets obliques ...

Pour info, je ne sais plus si je l'ai précisé sur la page, le code est prévu pour fonctionner avec MooTools.

Amuse-toi bien avec et bonne année JavaScript à toi et à tous les autres ;)

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 02 janv. 2008, 11:01
par agité
Salut,

le copié/collé du code sous Wordpress est un peu problématique car il transforme les simple et double-quotes en apostrophes et guillemets obliques ...

Pour info, je ne sais plus si je l'ai précisé sur la page, le code est prévu pour fonctionner avec MooTools.

Amuse-toi bien avec et bonne année JavaScript à toi et à tous les autres ;)
Bonjour Once Tom,

en effet j'ai eut beaucoup de mal a faire marcher ton code :?

Déjà pour les simple et double quote mais je ne savais pas qu'il fallait utiliser les MooTools étant donné que ce n'est pas spécifié dans ton tutoriel et qu'il faut connaitre cette outil pour svoir qu'il utilise le addEvent et autres ...

Mais finalement tout marche et j'en suis bien content.

Posté : 02 janv. 2008, 13:40
par Truc
Modération :
agité, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.