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 cette textarea. Quand j'insère dedans, mon curseur est comme au milieu de la textarea et pas au début? Quelle est l'explication?
Regardez attentivement votre code. Il contient déjà trois sauts de ligne et une tonne d'espaces avant le </textarea>
. Supprimez-les en premier afin qu'il n'y ait plus de sauts de ligne entre les balises. Cela pourrait déjà faire l'affaire.
Tout ce qui est entre <textarea>
et </textarea>
est utilisé comme valeur par défaut pour votre zone de texte. Il y a quelques espaces dans votre exemple. Essayez d'éliminer tout cela.
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>
Fondamentalement, il devrait être
<textarea>something here with no spaces in the begining</textarea>
S'il y a des espaces prédéfinis, disons en raison du formatage du code comme ci-dessous
<textarea>.......
....some_variable
</textarea>
Les espaces indiqués par des points continuent d’être ajoutés à chaque soumission.
En bref: <textarea>
devrait être fermé immédiatement sur la même ligne où il avait commencé.
Médecine générale: ceci ajoutera les sauts de ligne et les espaces utilisés pour l'indentation dans le code.
<textarea id="sitelink" name="sitelink">
</textarea>
Pratique correcte
<textarea id="sitelink" name="sitelink"></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 manière correcte sera:
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php if($siteLink_val) echo $siteLink_val; ?></textarea>
Une autre solution consiste à 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. En supprimant les espaces et les sauts de ligne dans le code, la ligne est trop longue.
Pour que cela paraisse un peu plus propre, envisagez d’utiliser l’opérateur ternaire:
<textarea><?=( $siteLink_val ? $siteLink_val : '' );?></textarea>
<textarea style="width:350px;
height:80px;" cols="42" rows="5" name="sitelink"
><?php if($siteLink_val) echo $siteLink_val; ?></textarea>
Bouger ...> ça marche pour moi.
Assurez-vous qu'il n'y a pas de saut de ligne ni d'espace après, mais bien de copier et coller ce code :)
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php if($siteLink_val) echo trim($siteLink_val);?></textarea>
Je sais que c'est tard, mais je peux aider les autres.
utilisez-le lorsque l'indentation du document est requise.
$('document').ready(function()
{
$('textarea').each(function(){
$(this).val($(this).val().trim());
}
);
});
Une solution qui a fonctionné pour moi consiste à ajouter le style white-space: normal;
à la zone de texte car il est parfois impossible d'éliminer tous les espaces (par exemple, lorsque vous souhaitez que votre code respecte les consignes de codage, ce qui nécessite l'ajout d'onglets, d'espaces et de sauts de ligne. )
Veuillez noter que la valeur par défaut pour textarea, du moins en chrome, est: white-space: pre-wrap;
La zone de texte affiche des espaces mystérieux car il existe un espace réel dans les balises. <textarea> <php? echo $var; ?> </textarea>
Après avoir supprimé ces espaces supplémentaires entre les balises, le problème sera résolu comme suit <textarea><php? echo $var; ?></textarea>
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>
Assurez-vous d'abord que votre $ siteLink_val ne renvoie pas d'espace blanc sous forme de valeur. L'élément <textarea> par défaut a une valeur vide. Par conséquent, si la variable que vous voulez répercuter pour une raison quelconque a des espaces, votre problème se pose dès le départ.
Pour que le code soit le plus pur possible, je vous suggérerais de faire quelque chose comme ceci, permettant ainsi une plus grande flexibilité par la suite. J'ai créé une fonction qui renvoie NULL si la variable n'est pas présente (ce que vous semblez viser dans le message d'origine) et la valeur absolue sinon. Une fois que vous vous êtes assuré du 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 zone de texte se lirait maintenant:
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?=$output_siteLink_val?></textarea>
En supposant que votre installation PHP soit configurée pour les appels de variable abrégés, comme indiqué dans les balises "<? =?>" Abrégées. Si vous ne pouvez pas utiliser cette méthode, n'oubliez pas de faire précéder votre code PHP de "<? Php" et de le fermer par "?>".
Évitez les sauts de ligne entre les <textarea>, car cela pourrait créer des caractères erronés.
En outre, vérifiez votre code CSS pour vous assurer qu’aucune règle de remplissage ne pousse le texte vers l’intérieur.
En outre, vous spécifiez une valeur de colonnes et de lignes dans la zone de texte, puis définissez un style de largeur et de hauteur. Ces règles sont contre-productives et entraîneront des effets visuels incohérents. Tenez-vous en pour définir la taille en fonction du style (je recommande de donner une classe à l'élément) ou les lignes/colonnes.
J'ai le même problème et la solution est très simple: ne commencez pas une nouvelle ligne! Bien que certaines des réponses précédentes puissent résoudre le problème, l’idée n’est pas clairement énoncée. La compréhension est importante: pour vous débarrasser des espaces non souhaités, ne commencez jamais une nouvelle ligne juste après votre balise de début. Ce qui suit laissera beaucoup d'espaces non désirés avant le contenu de votre texte:
<textarea>
text content // start with a new line will leave a lot of unwanted spaces
</textarea>
La bonne façon de le faire est:
<textarea>text content //put text content right after your start tag, no new line
</textarea>
Si vous préférez utiliser l'indentation, faites-le après avoir ouvert la balise <?php
, comme suit:
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php // <--- newline
if($siteLink_val) echo $siteLink_val; // <--- indented, newline
?></textarea>
Il suffit de définir votre et votre balise proche dans la même ligne.
<textarea class="form-control"
id="newText"
rows="6"
placeholder="Your placeholder here..."
required
name="newText"></textarea>
De plus, la balise textarea montre les espaces pour les nouvelles lignes, les onglets, etc., dans du code multiligne.
De plus, quand vous dites que le curseur est au "milieu" de la zone de texte, cela me fait penser que vous pourriez aussi avoir un remplissage supplémentaire ou text-align: center défini quelque part dans votre CSS.
conserve le code textarea sans espaces blancs supplémentaires à l'intérieur
de plus, si vous voyez des lignes vides supplémentaires .__, il existe une solution en méta-langage:
<textarea>
for line in lines:
echo line.replace('\n','\r')
endfor
</textarea>
il imprimera des lignes sans lignes vides supplémentaires Bien sûr, cela dépend si vos lignes se terminent par '\ n', '\ r\n' ou '' - veuillez adapter