8
votes

JavaScript pour supprimer les espaces d'une valeur de zone de texte

J'ai beaucoup cherché à ce sujet et je ne trouve pas d'exemple spécifique de ce que j'essaie de faire. Fondamentalement, je souhaite obtenir la valeur d'une zone de texte, par le nom de la zone de texte (pas ID). Ensuite, je veux supprimer tous les espaces, pas seulement leader ou la traînée, mais aussi des espaces dans le texte. Par exemple, pour ce code HTML:

var val = document.CashSheet.elements["10010input"].value; 
val2 = val.replace(<someregex>, '');
alert(val2);


0 commentaires

7 Réponses :


12
votes

Vous pouvez utiliser document.getelementsbyname code> pour obtenir la maintien de l'élément sans avoir à passer via le formulaire, tant qu'aucun autre élément de la page n'a le même nom. Pour remplacer tous les espaces, utilisez simplement une expression régulière avec l'indicateur global défini dans la méthode Remplacer (CODE> Remplacer () CODE>:

var el = document.getElementsByName("10010input")[0];
var val = el.value.replace(/\s/g, "");
alert(val);


6 commentaires

Bonjour Tim, Question rapide, j'essaie ce que vous suggérez un contenu de champ de texte, mais cela ne fonctionne pas et je crois que c'est parce que son être peuplé dans des paramètres localisés polonais sur le serveur Web. Qu'est-ce que vous avez besoin de capturer pour un "espace polonais" afin de parler, en ASCII, il apparaît comme 20 mais la regex ne le capture pas, mais capturera d'autres espaces que j'ai mis dans une ficelle moi-même.


Vraiment? Êtes-vous sûr que ce n'est pas 20 dans Hex (le caractère de l'espace normal est de 20 en hexagone)? Si vous avez besoin de spécifier une liste de caractères spatiaux pour vous associer, vous pouvez faire quelque chose comme nouveau regexp ("[\\ s \ u1234 \ u4321]", "g") au lieu de / \ s / .


Oui, son retour comme "4 376", si j'essaie cette regex, ça ne fait rien, mais si j'ajoute "AA" à la fin de cette chaîne, la regex le rendra comme ceci: "4 376AA «Donc, cela fonctionne sur mon espace mais pas sur l'espace qui revient du serveur Web polonais. Je pense que c'est un personnage d'espace unicode différent, que je vais essayer de trouver lequel il vous utilise alors un nouvel appel de Regexp.


Ok j'ai trouvé son \ u00a0, donc un nbsp, mais j'ai besoin de trouver une regex qui correspond maintenant à la nouvelle réégalité ("[\\ s \ u00a0]", "g") ne fonctionne pas :(


Vraiment? nouvelle regexp ("[\\ s \ u00a0]", "g"). Test ("\ u00a0"); fonctionne pour moi, y compris dans IE (dans lequel \ s ne correspond pas \ u00a0 , enfreignant la spécification ECMASCRITP).


Cela l'a fait! .replace ([\ f \ n \ r \ t \ v \ u00a0 \ u2028 \ u2029], '_')



6
votes

Vous devez "généraliser" que Regexp vous utilisez, il est donc appliqué à tous les matchs au lieu de la première. Comme ceci: xxx

remarque le "g" qui modifie la réégycle de sorte qu'il devient "général".


9 commentaires

+1 pour \ s classe de caractères; J'utiliserais probablement le travail "Global" au lieu de "Général"


@Michael: Pourquoi \ s significativement mieux qu'un personnage d'espace ici? Il ne peut y avoir de caractères de rupture de ligne dans un et les espaces non-rompus ne sont pas souvent saisis dans une zone de texte.


@Michael HAREN: Je savais que ça a commencé avec un «G», mais je ne savais pas lequel c'était exactement. @Tim Down: Je pense que \ s est plus lisible, n'est-ce pas?


@Abel: Dunno. Assez subjectif, je dirais. Ce n'est pas un gros problème et \ s est probablement la meilleure option fonctionnalité-sage.


@TIM Il y a des dizaines de personnages d'espaces qui pourraient être collés dans ce n'est pas un simple "espace"


@Michael: Peu de nombreuses sont couvertes par \ s cependant. Il correspond précisément neuf caractères (\ u0009, \ u000a, \ u000b, \ u000c, \ u000d, \ u0020, \ u00a0, \ u2028 et \ u2029). Cependant, je concède le point: \ s est la meilleure option.


Bonjour à tous merci pour les réponses, question rapide à Tims Commentaire, j'essaie de ce que vous suggérez un contenu de champ de texte, mais il ne fonctionne pas et je pense que c'est parce que son être renseigné dans des paramètres localisés polonais sur le serveur Web. Qu'est-ce que vous avez besoin de capturer pour un "espace polonais" afin de parler, en ASCII, il apparaît comme 20 mais la regex ne le capture pas, mais capturera d'autres espaces que j'ai mis dans une ficelle moi-même.


Certains navigateurs permettent de coller CR / LF dans les éléments .


@EyElidirt: oui. Mon phrasé était mauvais dans une tentative de garder les choses simples.




5
votes

Voici une fonction que j'utilise pour remplacer les espaces.

function removeSpaces(val) {
   return val.split(' ').join('');
}


0 commentaires


2
votes

essayez ceci xxx


0 commentaires

2
votes

essayez ceci: - em> Vous pouvez essayer d'écrire ou de copier collez une chaîne, y compris de l'espace blanc, il est supprimé automatiquement. EM>

P>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form>
<input placeholder="Enter Your Text" type="text" onkeypress="return AvoidSpace(event);" onblur="this.value=removeSpaces(this.value);">


</form>


0 commentaires