1

J'utilise jQuery("#shipdata").html() fonction pour obtenir le contenu html de l'élément, qui devrait renvoyer une chaîne de date, comme '5/14/2014'. Il fonctionne parfaitement dans Chrome, Firefox et Safari. Mais dans Internet Explorer, il renvoie quelque chose d'étrange:jQuery.html() étant brouillé dans IE

J'ai essayé d'alerter la longueur de la chaîne retournée et il dit "14", ce qui devrait être "9". J'ai également essayé d'alerter le code clé de chaque caractère, et j'ai trouvé qu'un code clé de "8206" est ajouté non seulement au début de la chaîne, mais aussi avant et après le caractère '/'.

Comment puis-je me débarrasser de ces caractères tronqués? En utilisant un petit morceau de code jquery, vous pouvez obtenir le résultat.

+3

peut u créer jsFiddle pour même –

+2

Avez-vous essayé à la place: 'jQuery ("# shipdata") texte()'.? –

+0

Oui, j'ai essayé .text() aussi. Mais ne fonctionne toujours pas. – CharlesDou

Répondre

3

de caractère 8206, ou \u200E, le "marque de gauche à droite". Il est principalement utilisé dans le texte bidirectionnel pour indiquer que "cette partie" doit être de gauche à droite.

Selon les paramètres régionaux, IE peut être en train d'insérer ces marques pour s'assurer que la date est affichée correctement. Par exemple, si vous êtes sur un ordinateur qui est défini sur une langue de droite à gauche, il peut utiliser ces marques pour faciliter le rendu.

Même si je ne sais pas quelle est la cause, vous devriez probablement désinfecter l'entrée de toute façon, par exemple dans le cas d'espaces.

<div id="shipdata"> 
    5/12/2014 
</div> 

Ce qui précède provoquerait également l'échec de votre code. Alors, essayez ceci:

jQuery('#shipdata').html().replace(/[^0-9\/]/g,''); 
+0

Oui, cela fonctionne !! J'ai regardé dans le code et de trouver que le #shipdate est mis à jour par la fonction javascript date.toLocaleDateString(), ce qui provoque le problème dans IE Merci beaucoup! – CharlesDou

+0

Dans le cas où quelqu'un se demande "comment diable savez-vous que", j'utilise '\ u200E' comme un délimiteur lorsque les données de l'utilisateur peuvent être au milieu d'une chaîne de caractères, pour éviter les «hacks» de mise en page - des astuces inoffensives qui entraînent un classement inattendu des symboles. –

+0

Utilisez 'unicode-bidi: isolate' ou' isolate-override' pour la saisie par l'utilisateur, le cas échéant. =) – Ryan

0

VÉRIFIEZ le DEMO. caractère

code jquery

alert($("#shipdata").html()); 
alert($("#shipdata").html().length); 

HTML CODE

<div id="shipdata">5/12/2014</div> 
Questions connexes