php - type - textarea html




Pourquoi la zone de texte est-elle remplie d'espaces blancs mystérieux? (14)

J'ai une zone de texte simple dans une forme comme ceci:

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

Je continue d'obtenir un espace blanc supplémentaire dans cette zone de texte . Quand je tabule dedans mon curseur est comme au milieu du textarea et pas au commencement? Quelle est l'explication?


Assurez-vous d'abord que $ siteLink_val ne renvoie pas d'espace blanc en tant que valeur. L'élément <textarea> a par défaut une valeur vide donc si la variable que vous écrivez pour une raison ou une autre a des espaces, il y a votre problème dès le départ.

Pour rendre le code le plus pur possible, je suggère que vous puissiez faire quelque chose comme ça, ce qui vous donnera plus de flexibilité plus tard. J'ai fait une fonction qui retourne soit une valeur NULL si la variable n'est pas présente (ce que vous semblez viser dans le message original) et la valeur absolue dans le cas contraire. Une fois que vous avez vérifié le contenu de votre variable, essayez ceci:

function build_siteLink_val() {
     if ( $siteLink_val ) {
          return $siteLink_val;
     }

     else {
          return "";
     }
}

$output_siteLink_val = build_siteLink_val();

Et le code suivant dans votre textarea serait maintenant lire:

<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?=$output_siteLink_val?></textarea>

Cela suppose que votre installation PHP est configurée pour les appels de variable à court terme, comme dans les balises "<? =?>" Raccourcies. Si vous ne pouvez pas produire de cette façon, n'oubliez pas de préfacer votre code PHP avec "<? Php" et de fermer avec "?>".

Évitez les sauts de ligne entre les <textarea> car cela peut créer le potentiel de caractères erronés.

Vérifiez également votre CSS pour vous assurer qu'il n'y a pas de règle de remplissage qui pousse le texte vers l'intérieur.

En outre, vous spécifiez une valeur cols et rows sur la zone de texte, puis définissez une largeur et une hauteur. Ces règles sont contre-productives et entraîneront des images incohérentes. Stick soit avec la définition de la taille par le style (je recommande de donner à l'élément une classe) ou les lignes / cols.


De plus, quand vous dites que le curseur est dans le "milieu" de la zone de texte, cela me fait penser que vous pouvez aussi avoir un padding supplémentaire ou text-align: center défini quelque part dans votre CSS.


En bref: <textarea> devrait être fermé immédiatement sur la même ligne que celle où il a démarré.

Pratique générale: ceci ajoutera des sauts de ligne et des espaces utilisés pour l'indentation dans le code.

<textarea id="sitelink" name="sitelink">
</textarea>

Bonne pratique

<textarea id="sitelink" name="sitelink"></textarea>

En outre: la balise textarea affiche des espaces pour les nouvelles lignes, tabulations, etc., en code multiligne.


Je sais qu'il est tard, mais peut aider les autres.

utilisez ceci lorsque l'indentation de document est requise.

$('document').ready(function()
{
    $('textarea').each(function(){
            $(this).val($(this).val().trim());
        }
    );
});

meme question


Je suis contre le code HTML mélangé avec du code PHP.

Cependant, essayez ceci:

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

La zone de texte affiche des espaces mystérieux car il existe un espace réel dans les tags. <textarea> <php? echo $var; ?> </textarea> <textarea> <php? echo $var; ?> </textarea> après avoir supprimé ces espaces supplémentaires entre les balises résoudra le problème, comme suit. <textarea><php? echo $var; ?></textarea>


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

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

Regardez de près votre code. Dans celui-ci, il y a déjà trois sauts de ligne, et une tonne d'espace blanc avant </textarea> . Supprimez-les d'abord afin qu'il n'y ait plus de saut de ligne entre les balises. Cela pourrait déjà faire l'affaire.


S'il vous plaît assurez-vous qu'il n'y a pas de ligne ou d'espace après, c'est pour s'assurer qu'il n'y a pas d'espace ou d'onglet, il suffit de copier et coller ce code :) Je l'ai réparé pour vous

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

Tout espace entre les balises d'ouverture et de fermeture de textarea sera considéré comme un espace. Donc, pour votre code ci-dessus, la bonne façon sera:

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

Un autre travail serait d'utiliser javascript:

//jquery
$('textarea#someid').html($('textarea#someid').html().trim());

//without jquery
document.getElementById('someid').innerHTML = document.getElementById('someid').innerHTML.trim();

C'est ce que j'ai fait. La suppression des espaces blancs et des sauts de ligne dans le code rend la ligne trop longue.


conserve le code textarea sans espace blanc supplémentaire à l'intérieur

de plus, si vous voyez des lignes vides supplémentaires, il y a une solution dans le méta-langage:

<textarea>
for line in lines:
echo line.replace('\n','\r')
endfor
</textarea>

il va imprimer des lignes sans lignes blanches supplémentaires bien sûr cela dépend si vos lignes se terminant par '\ n', '\ r \ n' ou '' - s'il vous plaît adapter


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

Moving ...> down fonctionne pour moi.





textarea