346 votes

Pourquoi le textarea est-il rempli de mystérieux espaces blancs ?

J'ai un simple zone de texte sous une forme comme celle-ci :

<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink">
    <?php if($siteLink_val) echo $siteLink_val; ?> 
</textarea>

Je continue à avoir des espaces blancs supplémentaires dans ce textarea . Lorsque j'utilise la tabulation, mon curseur se trouve au milieu de l'écran. textarea et pas au début ? Quelle est l'explication ?

0 votes

Comme fermement défini dans toutes les réponses upvoted, tldr ; est ce comportement est dans la fenêtre du navigateur client de bureau. Cela dépend de la façon dont l'interpréteur DOM le gère, mais tous les espaces excédentaires sont des espaces blancs/commentaires - mais ils sont toujours inclus dans le moteur de rendu HTML. Ainsi, les nouvelles lignes/espaces blancs, les combinaisons <?php y ?> sans espace, jusqu'au prochain élément DOM défini (<textarea>). ><? php ... ?>< /textarea>)

595voto

Pekka 웃 Points 249607

Regardez attentivement votre code. Il y a déjà trois sauts de ligne et une tonne d'espace blanc avant </textarea> . Supprimez-les d'abord de manière à ce qu'il n'y ait plus de sauts de ligne entre les balises. Cela peut déjà faire l'affaire.

4 votes

@user79685 vous êtes le bienvenu. Lisez mon nouveau commentaire ci-dessus, je ne me moquais pas vraiment de vous. Du moins pas de façon méchante :)

9 votes

Mmm, je ne suis pas d'accord avec ça. Je suis très favorable au tact et à l'étiquette dans les discussions en ligne, et j'apprécie le ton général très amical de SO. D'un autre côté, il faut développer un peu de peau quand on se déplace sur le net, c'est vrai.

2 votes

Très bien. J'étais également confronté à ce problème et j'ai essayé toutes les astuces possibles, de la coupe du texte à l'application de la propriété 'text-index' (en utilisant css) :-D :-D. (comme je suis bête). Le problème est survenu parce que j'ai indenté le code en html :- ?.... Merci, votre réponse m'a aidé aussi... :-)

92voto

amarillion Points 5863

Eh bien, tout ce qui se trouve entre <textarea> y </textarea> est utilisé comme valeur par défaut pour votre zone de texte. Il y a des espaces blancs dans votre exemple. Essayez de les éliminer complètement.

4 votes

Merci beaucoup. Je n'avais pas réalisé que tout ce qui est entre les deux est par défaut. J'ai choisi le gars du dessus parce qu'il a répondu en premier bien qu'il m'ait ridiculisé. Merci de défendre les gens.

2 votes

C'est simple. Merci beaucoup !

71voto

Bart Kiers Points 79069

Ouvrez (et fermez !) vos balises PHP juste après, et avant, vos balises textarea tags :

<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php
  if($siteLink_val) echo $siteLink_val;
?></textarea>

5 votes

C'est une façon intelligente de conserver l'indentation dans ces cas. Merci !

0 votes

Cela a finalement résolu mon problème. Merci beaucoup Bart

0 votes

Brillant. C'est très utile dans les cas où vous souhaitez conserver une indentation cohérente sur toute la lime de votre lame.

29voto

user1051068 Points 304

En gros, cela devrait être

<textarea>something here with no spaces in the begining</textarea>

S'il y a des espaces prédéfinis, par exemple en raison du formatage du code, comme suit

<textarea>.......
....some_variable
</textarea>

Les espaces indiqués par des points continuent de s'ajouter à chaque soumission.

0 votes

Il s'agit d'un vieux "truc", parfois même oublié. Nous avons déjà eu des problèmes HTML basés sur cette astuce en remontant jusqu'à IE6/7 +1

0 votes

Ça a sauvé ma journée. Merci !

0 votes

Ça marche très bien, mais c'est vraiment drôle. Une explication sur ce bug bizarre ?

5voto

Brian Lacy Points 4408

Pour obtenir une apparence un peu plus propre, pensez à utiliser l'opérateur ternaire :

<textarea><?=( $siteLink_val ? $siteLink_val : '' );?></textarea>

2 votes

N'utilisez pas de balises courtes et ne suggérez pas aux autres de le faire. Cela aidera les gens à éviter les problèmes lorsqu'ils installent une application web sur un serveur de production avec une configuration différente. Merci.

4 votes

J'utilise toujours les balises courtes dans les scénarios de modélisation, précisément parce que je veux que davantage de personnes les utilisent, et ainsi encourager la communauté PHP à continuer à les supporter. Cela dit, les balises courtes doivent être utilisées UNIQUEMENT dans les scénarios de création de modèles, JAMAIS dans la logique applicative, et bien évidemment, UNIQUEMENT lorsque le serveur les supporte. Connaissez toujours votre environnement de production avant de déployer. (Naturellement, ce n'est pas l'endroit pour discuter des avantages et des inconvénients des balises courtes, mais vous l'avez soulevé, donc c'est ma justification).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X