Autor Zpráva
nethor
Profil
Prosim poraďte, jak pomoci JavaScriptu
porucit vstupnimu poli textarea aby měnilo svoji výšku resp. rows podle počtu vkladaných řádků.

Je to použito např. ve phpMyAdmin - vstup sql.
..ale ze zdroje se mi nedaří vydolovat jádro pudla.

Díky.
peta
Profil
nethor
diskuse - php
cz.php.net/echo

Pocet radku predem zjistit nelze bez pocitani ani v php ani v js. Kazdy prohlizec pouziva jiny font pro textarea i dokument. Jestlize je textarea zalamovaci, pak se zalomi.
Cili bla bla, vykasli se na to a zadej pevne vysku 10-20 radku, coz je obvykle postacujici, zbytek si uzivatel zaroluje.

"Je to použito např. ve phpMyAdmin - vstup sql."
Zobrazit - zdrojovy kod - dohledej si, kdyz to tam pouzivaji. Pokud si chces nekoho najmout na hledani za tebe, stanov cenu, zaplat predem cast (ja napriklad ti neduveruju, ze bys mi zaplatil, kdyz ses linej zobrazit a hledat) a uvidime.

google.com javascript textarea rows

Treti odkaz popisuje, co vse v textarea jde nastavit. Myslim, ze tam toho uz vic nebude:
http://www.comptechdoc.org/independent/web/cgi/javamanual/javatextarea .html
- schazi tam nastaveni pozice kurzoru

Paty odkaz:
http://www.velocityreviews.com/forums/t85277-change-textarea-dynamical ly.html
- tady vysku resi treba pres height, s tim, ze si nastavi pevnou velikost fontu a pak samozrejme pocet radku neni problem spocitat jako
<div style="font... ;white-space:pre; width:...;">
text
</div>
alert(objekt(...).offsetHeight)
vysku potom pouzijes pro textarea, ale musis v ni mit nastaveny font

google.com javascript textarea rows dynamic
http://www.felgall.com/jstip45.htm
- tady se mu to treba samo natahuje a hned tam pise, ze je opera po verzi 8 smejd a tam to nejde

Zkratka si myslim o tobe, ze jsi lenivy a priste na zadny takovy dotaz neodpovim jinak nez odkazem na google.
nethor
Profil
OK, odkaz na google bude lepsi, hlavne, kdyz si odpustis ten psychologický rozbor. ;-)
Jinak ten scriptik

function sz(t)
{
a = t.value.split('\n');
b=1;
for (x=0;x < a.length; x++) {
if (a[x].length >= t.cols) b+= Math.floor(a[x].length/t.cols);
}
b+= a.length;
if (b > t.rows) t.rows = b;
}

resi , co jsem potreboval.
Zbystr
Profil *
	<script>
		function redraw(min_height){
			var el = document.getElementById('test');
			scrollHeight = el.scrollHeight + 2;
			if (scrollHeight > min_height)
				el.style.height = scrollHeight;
		}
	</script>
	<textarea style='width:300px; height:100px; border:1px solid #CCC; overflow-y:hidden' id='test' onkeyup='redraw(100)'></textarea>


jednoduche reseni
nethor
Profil
To me nenapadlo, taky dobry, dekuju.
Zbystr
Profil *
Samozrejme se to da jeste zredukovat /lepe napsat/, psal jsem to narychlo.peta
peta
jestli chces prispivat typem google javascript neco, tak myslim, ze prispivat nemusis vubec
peta
Profil
Zbystr
Hold, kdyz jsou lidi lini pouzivat vyhledavaci sluzbu nebo nenajdou vhodna slova, toz jim dam tipa, ne?
neZbystr zadaji 4 slova do vyhledavace a 4ty odkaz je presne to, co hledaji.
Hold nemuzem byt vsichni zdatni ve vyhledavani :)

Sis mne u toho scriptu prekvapilo, ze funguje. Ze si textarea sama prida \n pro zalomeni radku jsem nevedel.
Kazdopadne resit to takhle dynamicky je nesmysl. neco jineho je uzivatelsky si zvetsit policko predem.
nethor
Profil
peta
Nesmysl to rozhodne neni, az budes delat user friendly komplikovanejsi formulare,
kdy u textarea predem nevis, jestli bude potreba 5 nebo 100 radku narazis na ten problem taky.
Honzisman
Profil *
To je super jednoduchý skriptík! Díky autorovi.
Jen se ještě chci zeptat, neporadil bys, jak automaticky odeslat textarea po 3. řádku? Nějak se s tím trápím a nemohu se hnout z místa.
Jde mi o to, že při použití čtečky čárových kódů potřebuji po zadání 3. kódu automaticky form odeslat. Čtečky po načtení kódu simulují stisk klávesy ENTER, proto se hodí textarea, kde mohu zadat 3 kódy za sebou = 3 řádky. Díky předem.
Honzisman
Profil *
Odpovím si sám, už to mám :-):
<script type="text/javascript">
var cnt;
function linecount(count) {
   var lines = count.split('\n');
   cnt = lines.length;
   var ele = document.getElementById('line_count');
   ele.value = cnt;
   document.getElementById('line_count').innerHTML = cnt;
   if (cnt > 3)
      document.getElementById("FORM").submit();
}
</script>
<form id="FORM" method="get">
   <textarea name="BARKODY" onkeyup="linecount(this.value)"></textarea><br />
   Jsme na řádku: <span id='line_count'></span>
</form>

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: