Autor Zpráva
Dukolm
Profil *
mam tuhle JS funkci:
function autoHeight(ta)
    {
        ta.style.overflowY = "hidden";   // vypnu vertikální posuvník, aby nerušil
        ta.onkeyup = ta.onkeydown = ta.onkeypress = ta.onchange = function()
        {
            this.style.height = 0;   // donutím <textareu>, aby si spočítala správně scrollHeight
            this.style.height = this.scrollHeight + 0 + "px";   // čtyřka je součet okrajů + paddingu
        };
        ta.onchange();
    }

A a používám ji z jquery timhle
$("textarea").keyup(function(e) {
            autoHeight(e.target);
        });

Jen se mi nedaří nijak upravit Jquery část tak aby se to provedlo i po načtení stránky
Dukolm
Profil *
Ještě teda taková maličkost tech Textarer mám v tý stránce víc
Chamurappi
Profil
Reaguji na Dukolma:
se mi nedaří nijak upravit Jquery část tak aby se to provedlo i po načtení stránky
Uvedený kód nevypadá, že by se snažil o cokoliv v okamžiku načtení stránky.

Stačí dát před konec <body> skript, který zavolá autoHeight na každou <textarea> , ne?
Dukolm
Profil *
Chamurappi:
problém je v tom že právě
$("textarea")
v sobě obsahuje všechny textarey na stránce a potřebuji nějak projít to pole a jednu po druhé odeslat přes funkci
autoHeight(textarea)
a zatím sem nenašel nic čím by to šlo udělat
Kcko
Profil
Řešení: http://jquery.jslab.net/zkousecka/#199c9e757de71682dd187422bad75b5f

Ta tvoje funkce by šla určitě lépe napsat jako plugin do jQuery.
_es
Profil
Kcko:
Ta tvoje funkce by šla určitě lépe napsat jako plugin do jQuery.
Ten celý skript by sa dal úplne jednoducho napísať aj bez jQuery.

Dukolm:
Jen se mi nedaří nijak upravit Jquery část
Asi preto, že je tam tá „jQuery časť“ dosť nadbytočná, jQuery je len jedna funkcia, nie programovací jazyk, treba sa ti naučiť JavaScript.

function autoHeight() { 
  Tu daj kód na to automatické nastavenie textarey dostupnej pod this.
} 
var t = document.getElementsByTagName("textarea"); //opravené ([#10])
for (var i = 0, o; i < t.length; i++) {
  o = t[i];
  o.onkeyup = o.onkeydown = o.onkeypress = o.onchange = o.onclick = autoHeight;
}

Samozrejme, treba ten skript spustiť vtedy, keď už príslušné textarey existujú.
Kcko
Profil
_es:
Ten celý skript by sa dal úplne jednoducho napísať aj bez jQuery.

Vím, a Země se přestane točit když to bude cez jQuery? >:o
Chamurappi
Profil
Reaguji na Dukolma:
potřebuji nějak projít to pole a jednu po druhé
Nastuduj si cykly. Bez použití té brzdy světové rotace by to mělo jít nějak takhle:
var i = 0, textarey = document.getElementsByTagName("textarea");
while(textarey[i]) autoHeight(textarey[i++]);


Reaguji na Kcka:
Ta tvoje funkce by šla určitě lépe napsat jako plugin do jQuery.
Ona je to spíš moje funkce. Nešla :-)
_es
Profil
Chamurappi:
by to mělo jít nějak takhle:
Ono je aj tá funkcia v [#1] celkovo divná, lepšie upraviť aj tú, okrem toho je zbytočne pre každú textareu vytváraná extra bezmenná funkcia.
Chamurappi
Profil
Reaguji na _es:
To je nejaký nový príkaz?
Rasistická smyčka určená pouze pro bílé elementy <textarea> :-)
Děkuji za upozornění. Tvůj kód v [#6] zkouší volat getElementsByTagName na window, což selže.

je zbytočne pre každú textareu vytváraná extra bezmenná funkcia
Pravda. Když už řešíme tu výkonnost, tak v [#6] je zase zbytečné zjišťovat opakovaně length na živé kolekci elementů.
_es
Profil
Chamurappi:
Išlo mi aj o názornosť kódu. Efektívnejšie je počítať „odzadu“, cyklus while je síce kratší a efektívnejší no menej prehľadný a vyžaduje viac pochopenia.

Když už řešíme tu výkonnost
O tú ide hlavne po detekcii udalostí, no cyklus by sa dal ešte výkonovo vylepšiť aj zachytením chyby pri priradení udalosti, teda netreba v cykle testovať nič.
Kcko
Profil
Chamurappi:
Ona je to spíš moje funkce. Nešla :-)

No takto jak je napsána, samozřejmě ne, ale já bych si jí tak napsal ;-) a opuštím tento topic než zase zabředneme do věčných debat nativní JS vs JS knihovny / frameworky

Pa děti.

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:

Prosím používejte diakritiku a interpunkci.

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

0