Comment supprimer un espace blanc lors de la saisie de texte avec jQuery?

183

Je souhaite utiliser jQuery pour envelopper un mailto: ancre autour d'une adresse e-mail, mais il saisit également l'espace blanc généré par le CMS.

Voici le HTML avec lequel je dois travailler, le script tel que je l'ai et une copie de la sortie.

HTML

<div class="field field-type-text field-field-email">
  <div class="field-item">
    [email protected]    </div>
</div>

jQuery JavaScript

$(document).ready(function(){
  $('div.field-field-email .field-item').each(function(){
    var emailAdd = $(this).text();
      $(this).wrapInner('<a href="mailto:' + emailAdd + '"></a>');
   });
 });

HTML généré

<div class="field field-type-text field-field-email">
  <div class="field-items"><a href="mailto:%0A%20%20%20%[email protected]%20%20%20%20">
    [email protected]    </a></div>
</div>

Bien que je soupçonne que les autres lisant cette question voudront peut-être simplement supprimer les espaces de début et de fin, je suis assez heureux de perdre tous les espaces, étant donné que c'est une adresse e-mail que j'emballe.

Steve Perks
la source
Double possible: stackoverflow.com/questions/10800355/…
The Unknown Dev

Réponses:

333

Utilisez la replacefonction dans js:

var emailAdd = $(this).text().replace(/ /g,'');

Cela supprimera tous les espaces

Si vous souhaitez supprimer uniquement les espaces de début et de fin , utilisez la méthode jQuery $ .trim:

var emailAdd = $.trim($(this).text());
Andreas Grech
la source
11
Correct mais / \ s / g serait un motif plus clair (le «i» est redondant et le «» est une forme inhabituelle - aussi un motif de / (^ \ s *) | (\ s * $) / g est équivalent à trim.
annakata
1
Vous avez raison annakata, j'ai supprimé le / i car il est redondant car la sensibilité à la casse dans ce cas n'est pas un problème
Andreas Grech
6
Une chose dont il faut se méfier est que IE ne considère pas les espaces insécables (& nbsp ;, & # 160 ;, & # xA0 ;, \ xA0, \ u00A0, etc ...) comme un espace blanc, donc / [ \ s \ xA0] + / g pourrait être plus fiable pour remplacer tous les espaces blancs.
travis
100

Javascript a intégré l'assiette:

str.trim()

Cela ne fonctionne pas dans IE8. Si vous devez prendre en charge des navigateurs plus anciens, utilisez la réponse de Tuxmentat ou de Paul .

Jhankar Mahbub
la source
69

En fait, jQuery a une fonction de trim intégrée:

 var emailAdd = jQuery.trim($(this).text());

Voir ici pour plus de détails.

Tuxmentat
la source
3
parce que chaque fonctionnalité intégrée doit avoir un wrapper jQuery
jasonszhao
24

str=str.replace(/^\s+|\s+$/g,'');

Paul
la source
1
Cela supprime les espaces blancs de début et de fin comme la fonction de découpage PHP.
Paul
1
pouvez-vous vous expliquer?
Francisco Corrales Morales
1
@FranciscoCorralesMorales: Je pense que vous avez le choix ici: en savoir plus sur les expressions régulières ou non. Si vous le faites, l'expression deviendra évidente, et si vous ne le faites pas, elle sera difficile à expliquer, donc elle sera facile à comprendre. Alors: découvrez les expressions régulières. Si vous ne comprenez toujours pas après avoir essayé de les apprendre, posez une question spécifique sur exactement ce que vous ne comprenez pas.
Peter V.Mørch
5
Comment tout ce qui ressemble à ceci / ^ \ s + | \ s + $ / g peut-il être appelé "normal"?
RyanNerd
On les appelle des expressions régulières car elles peuvent décrire des langages réguliers, des langages qui peuvent être analysés à l'aide d'une machine à états finis. Les expressions régulières, dans leur forme la plus pure, sont en fait un moyen de décrire une machine à états finis. Considérant à quel point il serait difficile d'inclure un diagramme d'un automate dans votre code d'une manière que l'ordinateur pourrait comprendre, les expressions régulières sont assez impressionnantes même si leur caractère laconique peut les rendre assez difficiles à analyser pour les humains.
QuantumOmega