Textarea neden gizemli beyaz boşluklarla dolu?


292

Ben böyle bir biçimde basit bir metin alanı var :

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

Bu metin alanında daha fazla boşluk bırakıyorum . İçine geçtiğimde imlecim başlangıçta değil , metin alanının ortasında mı? Açıklama nedir?

Yanıtlar:


485

Kodunuza yakından bakın. İçinde, zaten üç satır sonu ve daha önce bir ton beyaz boşluk var </textarea>. Etiketler arasında artık satır sonu olmaması için önce bunları kaldırın. Hile zaten yapabilir.


4
@ user79685 rica ederim. Yukarıdaki yeni açıklamamı okuyun, sizi gerçekten alay etmedim. En azından ortalama bir şekilde değil :)
Pekka

9
Mmm, buna katılmıyorum. Çevrimiçi tartışmalarda incelik ve görgü kuralları için çok çalışıyorum ve SO hakkında genel olarak çok dost canlısı bir tonun tadını çıkarıyorum. Öte yandan, ağda hareket ederken bir parça cilt geliştirmek gerekiyor, bu doğru.
Pekka

2
çok hoş. Ben de bu sorunla karşı karşıya idi ve (css kullanarak): text-index 'özelliği uygulamak için metni kırpmak her hile denedim :-D :-D. (ne kadar aptal olduğumu). Sorun html kodunu girintili çünkü oluştu: -? ... Teşekkürler, cevabın da bana yardımcı oldu .. :-)
Gaurav Sharma

3
Ayrıca, valueetiketlerin içine metin eklemek yerine niteliği kullanın.
João Cunha

2
Bir ihtiyar ama bir tatlım. Bu bana bugün yardımcı oldu. @Pekka harikasın!
wordman

73

Peki <textarea>ve arasındaki her şey </textarea>, metin alanı kutunuz için varsayılan değer olarak kullanılır. Örneğinizde orada bir boşluk var. Tüm bunları ortadan kaldırmaya çalışın.


4
çok teşekkürler. Aradaki her şeyin varsayılan olduğunu fark etmedim. Üstteki adamı seçtim çünkü bana alay etmesine rağmen önce cevap verdi. Millet için dışarı çıktığın için teşekkürler.
Afamee

2
Basit. Çok teşekkürler!
Sergio Belevskij

56

PHP etiketlerinizi etiketlerinizin hemen ardından ve öncesinde açın (ve kapatın!) textarea:

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

4
bu, bu durumlarda girintiyi korumanın akıllıca bir yoludur. Teşekkürler!
Sebastianb

Bu nihayet sorunumu düzeltti. Çok teşekkürler Bart
Stephen Kennedy

32

Kısacası: <textarea>hemen başladığı aynı hatta kapatılmalıdır.


Genel Pratik: Bu, kodda girinti için kullanılan satır sonlarını ve boşlukları toplar.

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

Doğru Uygulama

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

Sorunumu çözdüm.
S.M_Emamian

Bu benim için de mükemmel bir çözümdü
Sheldon R.

Sorunumu çözdüm, harika bir çözüm. Teşekkürler
Husnain Shabbir

26

Temelde olmalı

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

Önceden tanımlanmış bazı alanlar varsa, aşağıdaki gibi kod biçimlendirmesi nedeniyle diyelim

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

Noktalarla gösterilen boşluklar her gönderimde ekleme yapmaya devam eder.


Bu bazen unutulan eski bir "numara". IE6 / 7'ye geri dönmeye dayanan HTML sorunları
yaşadık

Günümü kurtardım. Teşekkürler!
Reuel Ribeiro

Sadece iyi çalışıyor, ama gerçekten komik. Bu garip böcek hakkında herhangi bir açıklama var mı?
Aminu Kano

11

Metin alanı açılış ve kapanış etiketleri arasındaki boşluk boşluk olarak değerlendirilir. Yukarıdaki kodunuz için doğru yol:

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

7

Başka bir çalışma, javascript kullanmak olacaktır:

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

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

Ben de öyle yaptım. Koddaki beyaz boşlukları ve satır sonlarını kaldırmak satırı çok uzun hale getirir.


5

Biraz daha temiz görünmesini sağlamak için üçlü operatörü kullanmayı düşünün:

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

2
Kısa etiketler kullanmayın, başkalarına bunu önermeyin. Bu, farklı bir yapılandırmaya sahip bir üretim sunucusuna bazı web uygulamaları yerleştirirken insanların PITA'lardan kaçınmasına yardımcı olacaktır. Teşekkür ederim.
Alfabravo

4
Ben senaryoları her zaman tam olarak kısa etiketler kullanırım çünkü daha fazla insanın bunları kullanmasını istiyorum ve böylece PHP topluluğunu desteklemeye devam etmeye teşvik ediyorum. Bununla birlikte, kısa etiketler SADECE şablon senaryolarında, ASLA uygulama mantığında ve SADECE sunucu bunları desteklediğinde açıkça kullanılmalıdır. Dağıtımdan önce her zaman üretim ortamınızı bilin. (Doğal olarak, bu kısa etiketlerin artılarını ve eksilerini tartışmak için bir yer değil, ama siz büyüttünüz, bu yüzden benim gerekçem.)
Brian Lacy

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

Aşağı inmek benim için işe yarıyor.


4

Aynı sorunu yaşadım ve çözüm çok basit: yeni bir çizgiye başlama! Önceki cevapların bazıları sorunu çözebilse de, fikir açıkça ifade edilmemiştir. Önemli anlayış, sadece başlangıç etiketinden sonra yeni bir satır başlatmak asla, istenmeyen boşluklar kurtulmak edilir.

Aşağıdaki yol YANLIŞ ve metin içeriğinizden önce çok fazla istenmeyen alan bırakacaktır:

 <textarea>
    text content // start with a new line will leave a lot of unwanted spaces
 </textarea>

Bunu yapmak için doğru yol:

 <textarea>text content //put text content right after your start tag, no new line
 </textarea>

3

Lütfen herhangi bir satır sonu veya boşluk olmadığından emin olun, boşluk veya sekme olmadığından emin olmak için, sadece bu kodu kopyalayıp yapıştırın :) Sizin için düzelttim

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

2

Ayrıca: textarea etiketi yeni satırlar, sekmeler vb. İçin çok satırlı kodda boşluklar gösterir.


2

içinde ek boşluk olmadan textarea kodunu sakla

dahası, ekstra boş satırlar görürseniz meta dilinde çözüm vardır:

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

ek boş satırlar olmadan satırları yazdıracak elbette ki satırlarınız '\ n', '\ r \ n' veya '' ile bitiyor.


2

Metin alanı gizemli boşlukları gösterir, çünkü etiketlerde gerçek bir boşluk vardır. <textarea> <php? echo $var; ?> </textarea> Etiketler arasındaki bu fazladan boşlukları kaldırdıktan sonra sorunu aşağıdaki gibi çözecektir. <textarea><php? echo $var; ?></textarea>


2

Benim için çalışan bir çözüm, stili white-space: normal;textarea'ya eklemektir, çünkü bazen tüm boşlukları ortadan kaldırmak mümkün değildir (örneğin, kodunuzun sekmeler, beyaz boşluklar ve satır sonları eklemeyi gerektiren kodlama kurallarınıza uymasını istediğinizde)

En az kromda textarea için varsayılanın: white-space: pre-wrap;


2

Girintiyi hala kullanmak istiyorsanız, <?phpetiketi açtıktan sonra yapın , şöyle:

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

2

Geç olduğunu biliyorum ama başkalarına yardım edebilirim.

bunu belge girintisi gerektiğinde kullanın.

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

aynı soru


Veya html'nizi doğru şekilde biçimlendirebilirsiniz. Ama içinde php kodu gibi bir şey istiyorsanız zor bir şey olabilir kabul ediyorum. Bu yüzden cevabınıza katılıyorum.
Niels Lucas

1

PHP koduyla karıştırılmış HTML koduna karşıyım.

Ancak şunu deneyin:

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

3
Neredeyse ... bu hala iki yeni satır içeriyor.
amarillion

Kullanması <textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php ve ?></textarea>gerçekten saf olmasını sağlamak için. Ayrıca, neden PHP ile HTML karşı olduğunu sorabilir miyim?
FluorescentGreen5

1

Kendinizi ve yakın etiketinizi aynı satırda tanımlamanız yeterlidir.

<textarea class="form-control"
          id="newText"
          rows="6"
          placeholder="Your placeholder here..."
          required
          name="newText"></textarea>

0

Ayrıca, imlecin metin alanının "ortasında" olduğunu söylediğinizde , CSS'nizin herhangi bir yerinde ekstra dolgu veya metin hizalama: merkezi olabileceğinizi düşündürüyor .


0

Önce $ siteLink_val değerinizin değer olarak beyaz boşluk döndürmediğinden emin olun. <textarea> öğesinin varsayılan olarak boş bir değeri vardır; bu nedenle, herhangi bir nedenle yankıladığınız değişkenin boşlukları varsa, sorundan hemen ayrılmanız gerekir.

Kodu mutlak temiz yapmak için, daha sonra biraz daha esneklik sağlayarak böyle bir şey yapabileceğinizi öneririm. Değişken yoksa (orijinal yazıda hedeflediğiniz gibi görünüyorsa) ya da mutlak değeri yoksa NULL döndüren bir işlev yaptım. Değişkeninizin içeriğinden emin olduktan sonra şunu deneyin:

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

     else {
          return "";
     }
}

$output_siteLink_val = build_siteLink_val();

Ve metin alanınızdaki şu kod şu şekilde okunur:

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

Bu, PHP kurulumunuzun kısaltılmış "<? =?>" Etiketlerinde görüldüğü gibi kısa el değişken çağrıları için yapılandırıldığı varsayılmaktadır. Bu şekilde çıktı alamıyorsanız, PHP kodunuzu "<? Php" ile önceden yazmayı ve "?>" İle kapatmayı unutmayın.

Hatalı karakterlerin potansiyelini oluşturabileceğinden, <textarea> 'lar arasındaki satır sonlarından kaçının.

Ayrıca, metni içe doğru iten bir dolgu kuralı olmadığından emin olmak için CSS'nizi kontrol edin.

Ayrıca, metin alanında bir sütun ve satır değeri belirtir ve ardından bir genişlik ve yükseklik stil uygularsınız. Bu kurallar karşı üretkendir ve tutarsız görsellerin oluşmasına neden olur. Boyutu stille tanımlayarak (öğeye bir sınıf vermenizi öneririm) veya satırları / sütunları yapıştırın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.