Autor Zpráva
SwimX
Profil
Dobrý den,
mám <textarea> kde chci mít maximální délku 500znaků + výpis kolik vám ještě zbývá:
<textarea rows="3" cols="25" id="pozn" name="pozn"></textarea><br>
        <p id="textarea_poc">Max. 500znaků <span id="napsano-zbyva"></span></p>

<script type="text/javascript">  
          textarea = document.getElementById("pozn"); 
          document.getElementById("napsano-zbyva").innerHTML = "| Napsáno: 0 | Zbývá: 500";
          if (textarea) {
            var mess, delka;
             textarea.onkeypress = function () {
             delka = textarea.value.length;
             if (delka < 10){
               mess = textarea.value;
               document.getElementById("napsano-zbyva").innerHTML = "| Napsáno: " + delka + " | Zbývá: " + (500 - delka);
             }
             else
               textarea.value = mess;
             }
          }
          </script>

Při přidání znaku -> mi napíše -> Napsáno: 0.
Když stisknu např šipku -> srovná se to
jak todle vyřešit? onkeydown popř up mi nevyhovuje, proože pokud držím jednu klávesu, nepřipočítává se, až potom naráz, a až potom vám to ořízne text na prvních 10 (potom 500) znaků

Děkuji
Str4wberry
Profil
Použij časování.
SwimX
Profil
Str4wberry
Děkuji

Změnil jsem tedy kód:
        <label for="pozn">Jiné činosti: <span>Popis cesty (abychom vás našli):</span> <span>Poznámka:</span></label>
        <textarea rows="3" cols="25" id="pozn" name="pozn"><? echo isset($_POST['pozn']) ? $_POST['pozn'] : "" ?></textarea><br>
        <p id="textarea_poc">Max. 500znaků <span id="napsano-zbyva"></span></p>
        <script type="text/javascript">  
          textarea = document.getElementById("pozn"); 
          document.getElementById("napsano-zbyva").innerHTML = "| Napsáno: 0 | Zbývá: 500";
          if (textarea) {
            var mess, delka;

            window.setInterval("stisk()", 50);
            
            function stisk() {
              delka = textarea.value.length;
              if (delka < 10){
                mess = textarea.value;
                document.getElementById("napsano-zbyva").innerHTML = "| Napsáno: " + delka + " | Zbývá: " + (500 - delka);
              }
              else
                textarea.value = mess;
            }
             
          }
          </script>


Ještě však dotaz: Nakolik to zpomaluje? javascriptu moc neholduju, ale testovat něco každých 50mili sekund mi příde trochu zátěž..?
Str4wberry
Profil
Moc to nezpomaluje. Když tak interval zvyšuj do té chvíle, než se Ti bude zdát četnost aktualizace nedostatečná.
SwimX
Profil
Str4wberry
Když tak interval zvyšuj
ok

a co třeba spustit ten setInterval až když budu kurzorem v textaree?
_es
Profil
SwimX
Ještě však dotaz: Nakolik to zpomaluje?
Môže to spomaľovať window.setInterval("stisk()", 50);.
Miesto toho je lepšie window.setInterval(stisk, 50);
Nie je miesto toho časovania lepšie priradiť funkciu stisk do všetkých udalostí, ktoré môžu spôsobiť zmenu?
Napríklad:
with(textarea) onchange = onclick = ondblclick = onmousedown = onmouseup = onkeypress = onkeydown = onkeyup = stisk;

Ten tvoj skript, ak napríklad zostáva 5 znakov, a v schránke je text so 6 znakmi, tak nedovolí vložiť pomocou ctrl+V nič.
Je to takto žiadúce?
SwimX
Profil
_es
Ten tvoj skript, ak napríklad zostáva 5 znakov, a v schránke je text so 6 znakmi, tak nedovolí vložiť pomocou ctrl+V nič.
Je to takto žiadúce?

jo. Je to formulář na registraci na praxe ve škole. Nikdo tam snad nebude vkládat nic ze schránky a pokud bude vkládat delší má smůlu. Je to jenom jakási poznámka na konec. A phpko ji stejně ořízne na 500znaků.

ten skript s with se mi líbí. Děkuji
_es
Profil
ten skript s with se mi líbí. Děkuji
Ale nedoporučujem si with veľmi obľúbiť a keď už ho používať, tak vedieť, čo to robí.
Zaujímavé využitie je napríklad: "statická" premenná
SwimX
Profil
_es
Zaujímavé využitie je napríklad: "statická" premenná
zajímavé určitě ale ztratil jsem se už v prvním příspěvku :)))
javascript nedělám, protože se dá vypnout a tím člověk příde o vše, co tak pracně naprogrmaoval. Todle bude jenom takové doplnění kontroly formuláře - kterou stejně dělá phpko - aby se nemusel pokaždé při pokusu o odeslání posílat dotaz na server, ale vyřešilo by se to na straně klienta. myslím že natvrdo do té stránky hodím ten tvůj řádek s with a bude :)

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: