Ich habe einen einfachen Textbereich in einer Form wie folgt:
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink">
<?php if($siteLink_val) echo $siteLink_val; ?>
</textarea>
Ich bekomme in diesem textarea immer zusätzliche Leerzeichen. Wenn ich in das Tabuliere, ist mein Cursor wie in der Mitte des textarea und nicht am Anfang? Was ist die Erklärung?
Schauen Sie sich Ihren Code genau an. Darin gibt es bereits drei Zeilenumbrüche und vor </textarea>
eine Tonne Leerzeichen. Entfernen Sie diese zuerst, damit zwischen den Tags keine Zeilenumbrüche mehr auftreten. Es könnte schon den Trick tun.
Nun, alles zwischen <textarea>
und </textarea>
wird als Standardwert für Ihr Textfeld verwendet. In Ihrem Beispiel gibt es einige Leerzeichen. Versuchen Sie, das alles zu beseitigen.
Öffne (und schließe!) Deine PHP - Tags direkt nach und vor deinen textarea
-Tags:
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php
if($siteLink_val) echo $siteLink_val;
?></textarea>
Grundsätzlich sollte es sein
<textarea>something here with no spaces in the begining</textarea>
Wenn es einige vordefinierte Leerzeichen gibt, sagen wir aufgrund der folgenden Code-Formatierung
<textarea>.......
....some_variable
</textarea>
Die durch Punkte angezeigten Leerzeichen werden bei jedem Senden immer hinzugefügt.
Kurz gesagt: <textarea>
sollte sofort in derselben Zeile geschlossen werden, in der er begonnen hat.
Allgemeine Praxis: Dies fügt Zeilenumbrüche und Leerzeichen für die Einrückung im Code hinzu.
<textarea id="sitelink" name="sitelink">
</textarea>
Richtige Praxis
<textarea id="sitelink" name="sitelink"></textarea>
Ein Leerzeichen zwischen den öffnenden und schließenden Tags des Textbereichs wird als Leerzeichen betrachtet. Für Ihren obigen Code lautet der korrekte Weg:
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php if($siteLink_val) echo $siteLink_val; ?></textarea>
Eine weitere Arbeit wäre die Verwendung von Javascript:
//jquery
$('textarea#someid').html($('textarea#someid').html().trim());
//without jquery
document.getElementById('someid').innerHTML = document.getElementById('someid').innerHTML.trim();
Das habe ich getan. Das Entfernen von Leerzeichen und Zeilenumbrüchen im Code macht die Zeile zu lang.
Um es etwas sauberer aussehen zu lassen, sollten Sie den ternären Operator verwenden:
<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>
Das Bewegen ...> nach unten funktioniert für mich.
Bitte stellen Sie sicher, dass nach dem Zeilenumbruch kein Leerzeichen oder Leerzeichen mehr vorhanden ist. Stellen Sie sicher, dass keine Leerzeichen oder Tabulatoren vorhanden sind. Kopieren Sie einfach diesen Code und fügen Sie ihn ein :) Ich hatte ihn für Sie korrigiert
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php if($siteLink_val) echo trim($siteLink_val);?></textarea>
Ich weiß, es ist spät, kann aber anderen helfen.
verwenden Sie diese Option, wenn das Einrücken von Dokumenten erforderlich ist.
$('document').ready(function()
{
$('textarea').each(function(){
$(this).val($(this).val().trim());
}
);
});
Eine Lösung, die sich für mich bewährt hat, ist das Hinzufügen des Stils white-space: normal;
zum Textbereich, da es manchmal nicht möglich ist, alle Leerzeichen zu entfernen (z. B. wenn Sie möchten, dass Ihr Code Ihren Codierrichtlinien entspricht, die das Hinzufügen von Tabs, Whitespaces und Zeilenumbrüchen erfordern )
Bitte beachten Sie, dass die Standardeinstellung für Textbereiche mindestens in Chrome lautet: white-space: pre-wrap;
Der Textbereich zeigt geheimnisvolle Räume, da in den Tags ein realer Raum vorhanden ist. Nachdem Sie diese zusätzlichen Leerzeichen zwischen den Tags entfernt haben, wird <textarea> <php? echo $var; ?> </textarea>
<textarea><php? echo $var; ?></textarea>
Ich bin gegen HTML-Code, der mit PHP Code gemischt ist.
Versuchen Sie jedoch Folgendes:
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink">
<?php
if($siteLink_val)
echo trim($siteLink_val);
?>
</textarea>
Stellen Sie zunächst sicher, dass Ihr $ siteLink_val keine Leerräume als Wert zurückgibt. Das <textarea> -Element hat standardmäßig einen leeren Wert. Wenn also die Variable, die Sie aus irgendeinem Grund wiederholen, Leerzeichen enthält, ist Ihr Problem sofort ein Problem.
Um den Code absolut sauber zu gestalten, würde ich vorschlagen, dass Sie so etwas tun könnten, um später mehr Flexibilität zu ermöglichen. Ich habe eine Funktion erstellt, die entweder NULL zurückgibt, wenn die Variable nicht vorhanden ist (worauf Sie im ursprünglichen Beitrag zu zielen scheinen) und ansonsten den absoluten Wert. Sobald Sie den Inhalt Ihrer Variablen überprüft haben, versuchen Sie Folgendes:
function build_siteLink_val() {
if ( $siteLink_val ) {
return $siteLink_val;
}
else {
return "";
}
}
$output_siteLink_val = build_siteLink_val();
Und der folgende Code in Ihrem Textbereich würde jetzt lesen:
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?=$output_siteLink_val?></textarea>
Dies setzt voraus, dass Ihre PHP -Installation für Short-Hand-Variablenaufrufe konfiguriert ist, wie in den verkürzten "<? =?>" - Tags dargestellt. Wenn Sie auf diese Weise nicht ausgeben können, denken Sie daran, Ihren PHP - Code mit "<? Php" vorzustellen und mit "?>" Zu schließen.
Vermeiden Sie Zeilenumbrüche zwischen den <textarea>, da dies zu fehlerhaften Zeichen führen kann.
Überprüfen Sie auch Ihr CSS, um sicherzustellen, dass es keine Auffüllregel gibt, die Text nach innen drückt.
Außerdem geben Sie im Textbereich einen Wert für Spalten und Zeilen an und formatieren dann Breite und Höhe. Diese Regeln sind kontraproduktiv und führen zu inkonsistenten Darstellungen. Bleiben Sie bei der Definition der Größe durch Stil (ich empfehle dem Element eine Klasse) oder den Zeilen/Spalten.
Ich habe das gleiche Problem und die Lösung ist sehr einfach: Keine neue Zeile beginnen! Obwohl einige der vorherigen Antworten das Problem lösen können, wird die Idee nicht klar ausgedrückt. Das wichtige Verständnis ist, um die unbeabsichtigten Leerzeichen loszuwerden, niemals eine neue Zeile direkt nach Ihrem Start-Tag zu beginnen. Folgendes hinterlässt viele unerwünschte Leerzeichen vor Ihrem Textinhalt:
<textarea>
text content // start with a new line will leave a lot of unwanted spaces
</textarea>
Der richtige Weg ist:
<textarea>text content //put text content right after your start tag, no new line
</textarea>
Wenn Sie immer noch Einrückungen verwenden möchten, tun Sie dies nach dem Öffnen des <?php
-Tags wie folgt:
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php // <--- newline
if($siteLink_val) echo $siteLink_val; // <--- indented, newline
?></textarea>
Definieren Sie einfach Ihr und Ihr enges Tag in derselben Zeile.
<textarea class="form-control"
id="newText"
rows="6"
placeholder="Your placeholder here..."
required
name="newText"></textarea>
Außerdem: Das Textfeld enthält Leerzeichen für neue Zeilen, Registerkarten usw. in mehrzeiligem Code.
Wenn Sie sagen, dass sich der Cursor in der "Mitte" des Textbereichs befindet, kann ich denken, dass Sie entweder eine zusätzliche Auffüllung haben oder text-align: center irgendwo in Ihrem CSS definiert sind.
behalten Sie den Textfeld-Code ohne zusätzliche Leerzeichen im Inneren
wenn Sie darüber hinaus zusätzliche Leerzeilen sehen, gibt es eine Lösung in Metasprache:
<textarea>
for line in lines:
echo line.replace('\n','\r')
endfor
</textarea>
zeilen werden ohne zusätzliche Leerzeilen gedruckt. Natürlich hängt es davon ab, ob die Zeilen mit '\ n', '\ r\n' oder '' enden -