web-dev-qa-db-de.com

Warum ist der Textbereich mit geheimnisvollen weißen Räumen gefüllt?

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?

228
Afamee

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.

396
Pekka 웃

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.

55
amarillion

Ö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>
46
Bart Kiers

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.

23
beebek

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>
18
pega wega

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>
7
Gyan

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.

7
Milad.Nozari

Um es etwas sauberer aussehen zu lassen, sollten Sie den ternären Operator verwenden:

<textarea><?=( $siteLink_val ? $siteLink_val : '' );?></textarea>
4
Brian Lacy
<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. 

2
User707

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>
2
kinta mahadji

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());
        }
    );
});

selbe Frage

2

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;

1
Taranjeet Singh

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> 

1
Ashfaq Jan

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>
1
streetparade

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.

0
dmanexe

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>
0
William Hou

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>
0
Kemal

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>
0

Außerdem: Das Textfeld enthält Leerzeichen für neue Zeilen, Registerkarten usw. in mehrzeiligem Code.

0
Gal Margalit

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.

0
Brian Lacy

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 -

0