11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour

j'ai une boucle du style

Pour i=0 a 10
{
_var +="<a href=\"#\" onClick=\"javascript:renvoie('"+_result[i].nom+"','"+_result[i].prenom+"');\">test</a>"
}
obj.innerHTML = _var;


Lorsqu'il y a dans le nom des caractères spéciaux comme les ' " \ / ma fonction javascript "renvoie" ne marche pas

J'ai essayer d'utiliser la fonction PHP htmlentities($valeur,ENT_QUOTES) en amont mais je n'ai pas réussi à faire quelque chose qui marche.

Est-ce que quelqu'un peut me montrer la marche à suivre Smiley smile [/i][/i]
Salut,

Essaye de remplacer :
_result.nom
par :
_result.nom.replace(/(['"\\])/g, '\\$1')
... et pareil pour le prénom. Si ça marche pas, il nous faudra voir ton code (le vrai, et plus en détail), idéalement dans une page en ligne.
Modifié par marcv (18 Jul 2009 - 11:38)
Super ça marche merci beaucoup, j'avais essayé avec .replace mais je n'utilisais pas du tout la bonne syntaxe.

Je vais mieux me renseigner, pour la comprendre car ça à l'air bizarre ^^

Ca marche pour les ' mais pas pour les ", est-ce que le bout de code que as posté est sensé marcher pour les 2 ?
a écrit :
Ca marche pour les ' mais pas pour les ", est-ce que le bout de code que as posté est sensé marcher pour les 2 ?
Oui, c'est censé placer un anti-slash devant les guillemets, apostrophes, et aussi devant les anti-slashes (pour les doubler).
Re, il m'est impossible de fournir une page d'exemple car c'est dans la partie admin, il faut être authentifié.

Un truc bizarre, la valeur que je récupère par le script php est celle afficher dans le lien.

Par contre en fonction des caractères spéciaux je me retrouve avec des trucs bizarres quand je passe par la fonction .replace(/(['"\\])/g, '\\$1');

Le _"_ devient _\" _ et je me retrouve avec un _=""_ à la fin de la nouvelle chaine

<a href="#" onclick="javascript:renvoieClient('128','cal\'aba');">cal'aba</a>

<a href="#" onclick="javascript:renvoie('132','cal\'aba\" ma');"="">cal'aba"ma</a>

<a href="#" onclick="javascript:renvoie('131','cal\'aba\" ma\'la\"ma');"="">cal'aba"ma'la"ma</a>

<a href="#" onclick="javascript:renvoie('122','CAL\'ABABA\" \\3');"="">CAL'ABABA"/\3</a>

<a href="#" onclick="javascript:renvoie('130','cal\'aba\'la');">cal'aba'la</a>
Erreur dans le post précédent, je crois que c'est Firedebug et le webkit développeur de Safari qui n'affiche pas le code réel.

J'ai toujours un problème avec les chaînes dans lesquelles j'ai des double quote "