Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tekstin rivitys kysymys

Triton [04.03.2008 16:20:22]

#

Tiedän, että jos teksti tiedostost kirjoitetaan tekstiä sivulle, niin sen saa rivitettyä str_replace("\n","<br>") tolla koodilla, mutta se luo html -rivin vaihdon ainoastaan, jos painaa enteriä, mutta aika usein kun textarea -kenttään kijoittaa tekstiä, niin se boxi rivittää sen koodin kun textarea -boxi ei veny vaakasuunnassa ja tällöin ei pysty läheskään aina painamaan enteriä, eli pystyykö sitä rivittämään jollain toisella tavalla?

Toivon mukaan ymmärsitte kysymyksen...

reca [04.03.2008 21:34:35]

#

Triton kirjoitti:

mutta aika usein kun textarea -kenttään kijoittaa tekstiä, niin se boxi rivittää sen koodin kun textarea -boxi ei veny vaakasuunnassa ja tällöin ei pysty läheskään aina painamaan enteriä, eli pystyykö sitä rivittämään jollain toisella tavalla?

Miksi textarean automaattinen rivittäminen ei sovellu käyttötarkoitukseesi ja mikä on käyttötarkoituksesi?

Ai niin, ja rivinvaihdot ovat windows-käyttöjärjestelmissä käsittääkseni muotoa \r\n. Ajattelin, jos asia kiinnostaa etkä tiennyt sitä ;-).

peg [04.03.2008 21:38:02]

#

Tämä teksti jakautuu kolmelle
riville, numero 25 = merkkien
määrä rivillä.

<?php
    $teksti = "Tämä teksti jakautuu kolmelle riville, numero 25 = merkkien max määrä rivillä.";
    $uusi = preg_replace("/.{25}\S* /", "\0\n", $teksti);
    echo "<pre>----------\n$uusi</pre>";
?>

Ja tässä linkki Antin vinkkiin. https://www.ohjelmointiputka.net/keskustelu/16778-sanojen-jako-riveille

neau33 [05.03.2008 00:31:59]

#

Heippa Triton!

Triton kirjoitti:

...textarea -boxi ei veny vaakasuunnassa...

Kuka sinulle on mennyt tuollaista valehtelemaan..?

<html<head></head><script type="text/javascript">

function tsekkaa(){
  var arvo;
  arvo = parseInt(document.getElementById('Text1').pituus);
  if (window.event.keyCode == 13){
    arvo = 0;
  }
  else if (window.event.keyCode == 8 && arvo > 0){
   // arvo -= 1;
  }
  else{
    arvo += 1;
  }
  document.getElementById('Text1').pituus = arvo;
  var xarvo = parseInt(document.getElementById('Text1').cols);
  arvo += 1;
   if (arvo > xarvo){
    document.getElementById('Text1').cols = arvo;
  }
}
</script>
<body onload="document.formi.Text1.focus()">
<form name="formi" method="post" action="">
<textarea id="Text1" pituus="0" onkeydown="tsekkaa()""
 rows="8" cols="26">
</textarea></form></body></html>

Merri [05.03.2008 06:59:42]

#

Tuo menee enemmän purkkakorjauksen puolelle. Textarean saa kyllä rivittämään sisältöä toisellakin tavalla:

textarea { white-space : nowrap; }

Tuolla asetuksella textarean pitäisi tehdä vaakasuuntainen vierityspalkki sen sijaan että se rivittää tekstin automaattisesti. White-spacen käyvät arvot ovat normal, pre, nowrap sekä inherit.

Toisaalta ongelmaa voi lähteä myös korjaamaan lopullisen esitystavan puolelta. Ilmeisesti ongelmana on liian pitkäksi kasvavat rivit, joten yksinkertaisin tempaus on yksinkertaisesti rajoittaa tekstin maksimipituutta. Kappalejaolla olevalla tekstillä se onnistuisi näppärästi näin:

#sisalto p { max-width : 400px; }

Eli tuo rajoittaisi tekstin maksimileveyden tiettyyn arvoon ja siten teksti rivittyisi nätisti sen mukaan. Ilman kappalejakoa tehdessä on sitten vähän vaikeampaa jos ei ole ylimääräistä elementtiä, jonka sisällä teksti on. Suosisin silti kappalejaon luomista, sen pitäisi onnistua tämmöisellä koodilla, olettaen ettei rivinvaihtojen lisäksi ole muita erikoisuuksia kuten listoja:

$korvattava = array("\n\n", "\n");
$korvaava = array("</p><p>", "<br />");

$teksti = '<p>' . str_replace($korvattava, $korvaava, $teksti) . '</p>';

Eli kaksi rivinvaihtoa tekee tässä kappalejaon ja yksi rivinvaihto yhden rivinvaihdon. Ehkä jonkun tason ongelmaksi jää vielä useammat rivinvaihdot.


Nean koodista sen verran, että se todennäköisesti bugaisi Safarilla aika kivasti, Safari kun sallii käyttäjän muuttaa tekstilaatikon kokoa vapaasti.

Metabolix [05.03.2008 07:28:10]

#

Triton kirjoitti:

Aika usein kun textarea -kenttään kijoittaa tekstiä, niin se boxi rivittää sen koodin kun textarea -boxi ei veny vaakasuunnassa ja tällöin ei pysty läheskään aina painamaan enteriä.

Mitähän oikein tarkoitat? Minusta esimerkiksi tämä Ohjelmointiputkan käyttämä täysin tavallinen tekstilaatikko rivittää tekstin kirjoitusvaiheessa automaattisesti. Enter toimii silti odotusten mukaan, ja automaattiset rivinvaihdot eivät kuulu tekstin sisältöön, joten niitä ei tietenkään lähetetä palvelimelle. En ole koskaan nähnyt (monen rivin) tekstilaatikkoa, jossa enter ei toimisi.

neau33 [05.03.2008 09:03:51]

#

Heippa taas!

Todennäköisesti bugaisi, tällä keralla tarkoitus oli vain kumota, pienen esimerkin avulla, nimimerkin Triton harhaluulo textarea-objektin 'lennossa' venyttämisen mahdottomuudesta...
On ihan varmaa, että nimimerkki Merri'n mainostama Safari säilöö tiedon textarean kulloisestakin tilasta ja että minä taas olen kykenevä vääntämään funktion, joka poimii ja manipuloi ko. asetuksia 'lennossa'...

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta