Autor Zpráva
Magnus123
Profil
Ahoj.

Zkusil jsem si v rychlosti vytvořit takové jednoduché počítadlo znaků v jQurey.

<script type="text/javascript">

 function pocitadloZnaku(selektor_id,vysledek_id,min_znaku,max_znaku)
{

 this.selektor = $("#" + selektor_id);
this.vysledek = $("#" + vysledek_id);
this.vysledek_barva = $("#" + vysledek_id + "_barva");
this.min_znaku = min_znaku;
this.max_znaku = max_znaku;

   this.selektor.keyup(function()
  {

     if (this.selektor.val().length < this.min_znaku || this.selektor.val().length > this.max_znaku)
      this.vysledek_barva.css('color','#ff0000');    
    else
      this.vysledek_barva.css('color','#33ff00');

    this.vysledek.text(this.selektor.val().length);      
      
    });          
    
 }


 var jmeno = new pocitadloZnaku("jmeno","jmeno_pocet",3,18);

 </script>

<input type="text" id="jmeno" />

<span id="jmeno_pocet_barva"><span id="jmeno_pocet">0</span> / 18</span>


Úkol tohoto scriptu by měl být ten, že když se stiskne klávesa (keyup) na inputu s ID "jmeno", zkontroluje se, zda obsahuje správný počet znaků (víc jak 2 a méně jak 19). Pokud ano, obarví se "0 / 18" na zelenou barvu. Jinak bude červený.
Poslední řádek zapíše do spanu s ID "jmeno_pocet" počet znaků v inputu.

Mohl by mi někdo, prosím, říct, co je v tom tak špatně, abych se příště vyvaroval takových chyb?
Camo
Profil
A čo použiť id_inputu.value.length?
peta
Profil
Zkus pouzit alerty, co vypisi.
   this.selektor.keyup(function() 
  { 
alert(this.selektor); //  tady by to mohlo napsat error, protoze this se vztahuje k new function na radku "this.selektor.keyup(function()" a ne k "function pocitadloZnaku"
     if (this.selektor...

Camo this.selektor.val().length, to tam preci pouzil, ne?
mag123
Profil *
Děkuji za odpověď, peta, máte pravdu.

Teď tedy nevím, jak to mám vyřešit. Měl by někdo nějakou radu?
peta
Profil
Pojmenovat tu promennou jinak? Pockej tu legraci, az neco podobne budes delat s casovaci setTimeout a setInterval :)
var aaa = this.selektor;
   this.selektor.keyup(function()  
  {  
alert(aaa)
Chamurappi
Profil
Reaguji na maga123:
Ulož si this do jiné proměnné (třeba that :-)) a v keyup pracuj s ní místo s this.
Měl bys chytat i onchange, protože klávesnice není jediným prostředkem ke změně textu.
Magnus123
Profil
Vyzkouším to. Děkuji vám za pomoc. :)

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