2010-03-11 3 views
111

Comment puis-je échapper un ' (guillemet simple) en JavaScript?Comment échapper une seule citation?

C'est là que je suis en train de l'utiliser:

<input type='text' id='abc' value='hel'lo'> 

Le résultat du code ci-dessus est « hel » peuplée dans la zone de texte. J'ai essayé de remplacer «avec», mais ce que je reçois.

<input type='text' id='abc' value='hel\'lo'> 

Le résultat du code ci-dessus est « hel \ » peuplé la zone de texte.

Comment puis-je échapper avec succès les guillemets simples?

+0

Hey Ravi, ce qui est plus d'une question html. J'ai rediffusé la question en HTML, mais vous voudrez peut-être changer cela dans votre question. –

Répondre

224

Vous pouvez utiliser les entités HTML:

  • &#39; pour '
  • &#34; pour "
  • ...

Pour plus, vous pouvez jeter un oeil à Character entity references in HTML.

+38

Pourquoi * devrait-on utiliser des guillemets doubles pour les valeurs d'attribut? – Gumbo

+0

aahhhh !! .. Je ne peux même pas y penser. Merci beaucoup. :) – Ravi

+0

HUmph; J'imagine que j'aurais dû dire * pourrait *, car cela aide, dans ce cas précis, mais n'est pas nécessairement nécessaire; encore, un * (à mon avis) * bonne raison serait que c'est plus proche de XHTML. –

-1

Vous pouvez essayer d'utiliser: &#145;

1

Probablement la meilleure façon:

<input type='text' id='abc' value="hel'lo"> 
42

Vous pouvez utiliser &apos; (qui est iffy dans IE) ou &#39; (qui devrait fonctionner partout). Pour une liste complète, voir le W3C HTML5 Named Character References ou le HTML entities table on WebPlatform.org.

+0

Wow, ça faisait longtemps que j'avais écrit ça. Merci de l'avoir lu - J'ai mis à jour les liens vers deux tables sur W3C et WebPlatform.org. –

+0

Ceux-ci fonctionnent "partout" excepté dans VXML Expression d'attributs où d'autres échappements sont nécessaires puisque dans VXML une valeur de variable String est indiquée entre guillemets simples dans les doubles guillemets normaux des définitions d'attribut:

7

Comme vous êtes dans le contexte de HTML, vous devez utiliser le HTML pour représenter ce caractère. Et pour HTML, vous devez utiliser un numeric character reference&#39; (&#x27; hexadécimal):

<input type='text' id='abc' value='hel&#39;lo'> 
+0

mais je n'ai pas compris ce que tu veux dire par' contexte de html'? –

+0

@coding_idiot Jetez un oeil aux différents [jetons qu'un analyseur HTML peut rencontrer au cours du processus d'analyse] (http://www.w3.org/TR/html5/syntax.html#tokenization). Chaque état a un ensemble différent de règles d'analyse qui sont déclenchées en fonction de l'entrée. Tous les états n'autorisent pas les références de caractères. Maintenant, si vous regardez la [valeur de l'attribut (guillemets simples)] (http: //www.w3.org/TR/html5/syntax.html#attribute-value- \ (single-quoted \) -state), vous pouvez voir qu'un '&' indique le début d'une référence de caractère. – Gumbo

5

Représentez comme entité texte (ASCII 39):

<input type='text' id='abc' value='hel&#39;lo'> 
Questions connexes