Autor Zpráva
maycza
Profil
Zdravím,

mám vytvořený kód, který počítá znaky v <textarea> a vypisuje jejich počet do <div>u. Počet znaků je omezený a po překročení povolené délky řetězce se má zobrazit alert. To mi funguje pokud zadám, že se má funkce spustit při událostech keyup a change. Když ale přidám i událost blur, tak mi ten alert vyskočí dvakrát, ale jen u IE8 a FF (20.0.1). Nevíte někdo v čm je háček?

Kód:
var pocet_znaku = function(max){

  znaky=$("#pole").val().length;  
  max_zn=max;
  
  if (znaky==0){$("#pole").css("background-color","#ffdfdf").css("border","2px solid #f00");}
  else{$("#pole").css("background-color","#fff").css("border","1px solid #7f8db9");}
  
  znaky=max_zn-znaky;
  if (znaky>=0){$("#bar").text(znaky).css("color","white");}
  else{
    znaky2=znaky*(-1);
    $("#bar").text(znaky2).css("color","white").css("border","1px solid #000");
  }

  if (znaky<0){
    $("#pole").css("color","red");
    if (warning==5){alert("Maximální délka textu byla překročena o "+znaky2+" znaků!");}
  }else{
    $("#pole").css("color","black");
  } 
}

$("#pole").bind("keyup blur change", function(){pocet_znaku(5)});
Chamurappi
Profil
Reaguji na mayczu:
Nevíte někdo v čm je háček?
V ničem není háček. Funkce pocet_znaku se vyvolává při všech třech událostech. Jedna uživatelská akce může vyvolat víc událostí najednou, takže když dojde k onbluru i k onchange, vyskočí alert dvakrát.

Osobně mi připadá zbytečně násilné reagovat alertem na něco jiného, než je klik na aktivní prvek.
maycza
Profil
No.. máte pravdu, že počítání znaků stačí nechat na události onKeyup, popř. onChange a samotný alert zobrazit (pokud by byla překročena povolená délka řetězce) při události onSubmit nebo onClick. To mě nenapadlo O:-)

Jen nevím, proč tedy nevyskakuje alert 3x, podle toho co píšete je logické že funkce pocet_znaku se spustí při každé z událostí, což by ale znamenalo, že po překročení povolené délky se zobrazí alert při události onKeyup, tím dojde ke ztrátě fokusu <textarea> a také došlo ke změně jejího obsahu...


Jinak díky za reakci :)
zkusím to přes tu onSubmit :-P

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: