Stránka 1 z 1

[JavaScript] - Nevíte kde je chyba???

Odeslat příspěvekNapsal: 25. 8. 2009 18:29
od infomf
Mám Javascriptový kód na odstranění diakritiky z textu. Původně byl postaven takto:

Kód: Vybrat vše
<HTML>
<HEAD>
<TITLE>Odstraňovač diakritiky</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
sdiak="áäčďéěíĺľňóôőöŕšťúůűüýřžÁÄČĎÉĚÍĹĽŇÓÔŐÖŔŠŤÚŮŰÜÝŘŽ";
bdiak="aacdeeillnoooorstuuuuyrzAACDEEILLNOOOORSTUUUUYRZ";

function bezdiak(form)
{
tx=""; txt=form.txt.value;
for(p=0;p<txt.length;p++)
{
if (sdiak.indexOf(txt.charAt(p))!=-1)
tx+=bdiak.charAt(sdiak.indexOf(txt.charAt(p)));
else tx+=txt.charAt(p);
}
form.txt.value=tx;
}
// -->
</SCRIPT>
</HEAD>
<BODY>
<FORM>
<TEXTAREA NAME="txt" COLS="30" ROWS="4"></TEXTAREA><P>
<INPUT TYPE="button" VALUE="Odstraň diakritiku"
onClick="bezdiak(form);">
</FORM>
</BODY>
</HTML>


jelikož, to potřebuji na textové pole, které má jiný název, tak jsem ho tak trochu upravil (jen názvy). Nejede!!!

Kód: Vybrat vše
<SCRIPT LANGUAGE="JavaScript">
<!--
sdiak="áäčďéěíĺľňóôőöŕšťúůűüýřžÁÄČĎÉĚÍĹĽŇÓÔŐÖŔŠŤÚŮŰÜÝŘŽ";
bdiak="aacdeeillnoooorstuuuuyrzAACDEEILLNOOOORSTUUUUYRZ";

function bezdiak(form2)
{
tx=""; txt=form2.odkaz.value;
for(p=0;p<odkaz.length;p++)
{
if (sdiak.indexOf(odkaz.charAt(p))!=-1)
tx+=bdiak.charAt(sdiak.indexOf(odkaz.charAt(p)));
else tx+=odkaz.charAt(p);
}
form2.odkaz.value=tx;
}
// -->
</SCRIPT>

<form name="Form2" method="get" action="portio/osobnosti_vysledky.php" id="Form2" onsubmit="bezdiak(form2);return false;">
<input type="text" id="Editbox2" style="position:absolute;left:12px;top:40px;width:242px;font-family:Courier New;font-size:16px;z-index:19" name="odkaz" value="">
<input type="submit" id="Button1" name="Button1" value="Hledej Portio!" style="position:absolute;left:257px;top:39px;width:96px;height:25px;font-family:Arial;font-size:13px;z-index:20" onClick="bezdiak(form2);">
</form>



Jestli někdo našel chybu, tak napište. Díky

Re: [JavaScript] - Nevíte kde je chyba???

Odeslat příspěvekNapsal: 25. 8. 2009 18:37
od Wikan
Kód: Vybrat vše
function bezdiak(form2)
{
tx=""; txt=form2.odkaz.value;
for(p=0;p<txt.length;p++)
{
if (sdiak.indexOf(txt.charAt(p))!=-1)
tx+=bdiak.charAt(sdiak.indexOf(txt.charAt(p)));
else tx+=txt.charAt(p);
}
form2.odkaz.value=tx;
}

Re: [JavaScript] - Nevíte kde je chyba???

Odeslat příspěvekNapsal: 25. 8. 2009 18:50
od JohnyDee
a este pozor na to, ze javascript je case sensitive, takze Form2 nie je to iste ako form2

Re: [JavaScript] - Nevíte kde je chyba???

Odeslat příspěvekNapsal: 25. 8. 2009 19:40
od infomf

Re: [JavaScript] - Nevíte kde je chyba???

Odeslat příspěvekNapsal: 25. 8. 2009 20:24
od Wikan
Ale funguje, zapomněl jsi na to Form2.

Re: [JavaScript] - Nevíte kde je chyba???

Odeslat příspěvekNapsal: 25. 8. 2009 21:43
od infomf
No, formulář se jmenuje Form2. Nebo co?

Re: [JavaScript] - Nevíte kde je chyba???

Odeslat příspěvekNapsal: 25. 8. 2009 22:07
od Wikan
onClick="bezdiak(Form2);"

Re: [JavaScript] - Nevíte kde je chyba???

Odeslat příspěvekNapsal: 25. 8. 2009 22:07
od JohnyDee
spravne. a preto ho treba premenovat na form2. alebo potom nechat tak ako je a volat funkciu bezdiak(Form2). lebo vy teraz tu funkciu volate s parametrom form2 a to je neexistujuci objekt. ten rozdiel medzi f a F je fakt dolezity. nekecam :)

Re: [JavaScript] - Nevíte kde je chyba???

Odeslat příspěvekNapsal: 26. 8. 2009 08:38
od infomf
Super! Už to jede! To jsem opravdu neveděl s tema velkýma písmenama. Já když programuji v Delphi, tak je to poměrně jedno.

Re: [JavaScript] - Nevíte kde je chyba???

Odeslat příspěvekNapsal: 26. 8. 2009 08:47
od Wikan
Doufám, že tvoje programy v Delphi nejsou tak prasácky napsaný. Míchat HTML, CSS, JS v jednou souboru není zrovna dobrý nápad. A víš o tom, že tam tu funkci "bezdiak" máš dvakrát?

Re: [JavaScript] - Nevíte kde je chyba???

Odeslat příspěvekNapsal: 31. 8. 2009 16:15
od gofry
Ak sa nechceš babrať s veľkými a malými písmenami, použi "this.form" na inpute alebo "this" na form.
Kód: Vybrat vše
<form ... onsubmit="bezdiak(this)">
...
<input ... onclick="bezdiak(this.form)" />
</form>

A to oddiakritikovanie by som asi riešil takto:
Kód: Vybrat vše
function bezdiak(theForm) {
  for(i = 0; i < sdiak.length; i++) {
    theForm.odkaz.value = theForm.odkaz.value.replace(new RegExp(sdiak[i], 'g'), bdiak[i]);
  }
}