Autor Zpráva
MartaBrno
Profil *
Zdravím, chtěla bych otravný přihlašovací PROMPT, který bude i po zadání mezerníku(ů) znovu načítat stránku.
např. else if (chCod == 8 ) location.reload(true); mi dělá pěknou neplechu....

var jmeno = prompt("Vaše jméno, prosím:","");

   if (jmeno == null)location.reload(true);
   else if (chCod = 8 ) location.reload(true);
   else if (jmeno == "")location.reload(true);
   else document.write("Vítejte "+jmeno);
Camo
Profil
MartaBrno:
Máš tam chCode = 8.
A nikde nevidíme že by si tú premennú chCode niekde nastavila.
Nechceš náhodou jednoducho zisťovať či zadané pole obsahujú iba medzery? To použi jmeno.match(/^[ ]*$/g)
Taps
Profil
MartaBrno:
ukázka http://kod.djpw.cz/jeqb
MartaBrno
Profil *
Definovala jsem chCod, ale asi nějak špatně ??

var jmeno = prompt("Vaše jméno, prosím:","");
var chCod = ('charCode' in event) ? event.charCode : event.keyCode; return (chCod < 0 || chCod > 64 );
if (jmeno == charCode)
 else if (jmeno == "")location.reload(true);
   else if (jmeno == null chCod)location.reload(true);
  
 else document.write("Vítejte "+jmeno);
Camo
Profil
MartaBrno:
To je úplný chaos. Vyzerá to že chceš otestovať či jmeno neobsahuje prázdny string alebo medzery. To rieši ten výraz čo som poslal včera:
jmeno.match(/^[ ]*$/g)
Ak chceš niečo iné tak to lepšie vysvetli.
Joker
Profil
MartaBrno:
Moc tomu skriptu nerozumím.
V první řadě se zpracování nikdy nemůže dostat za ten return na řádku 2.
Když pominu to, na ř. 3 se porovnává jmeno proti neexistující proměnné a podmínka na ř. 5 je syntakticky špatně.
Chamurappi
Profil
Reaguji na MartuBrno:
A musí tam vůbec být ten location.reload? Ještě navíc s true, aby se přebila keš?
do {
  var jmeno = prompt("Vaše jméno, prosím:", "");
} while(!jmeno || jmeno.match(/^\s+$/));
document.write("Vítejte " + jmeno);
Postup od Tapse počítal s obyčejným formulářem (a bránil i napsání jakékoliv mezery), pro prompt není použitelný. Dovolím si podotknout, že formuláře jsou na vyplňování příjemnější, ale to asi víš, když už v prvním příspěvku píšeš o otravnosti.


Reaguji na Tapse:
var event = window.event || e;
To tam je zbytečné, e bude ve všech prohlížečích obsahovat objekt, protože když napíšeš atribut onkeydown="klavesa(event)", tak starší Explorer při volání použije globální window.event a Mozilla tam dá lokální proměnnou event. To, že atributy fungují takhle, je mimochodem i prapůvodní příčina této nekompatibility (špatný reverse-engineering ze strany MS při zkoumání chování Netscapu).
MartaBrno
Profil *
snažím se udělat script který tě nepustí dál odkliknutím Escapem, prázdným textovým polem v PROMPTu anebo mezerníkem.

kam dám to " jmeno.match(/^[ ]*$/g) " ?

Zkoušeli jsme to všelijak a nejelo to.

if (jmeno == jmeno.match(/^[ ]*$/g))

if jmeno.match(/^[ ]*$/g)
Camo
Profil
MartaBrno
if ( jmeno.match(/^[ ]*$/g) ) 
{
    // sa vykoná ak je jmeno prázdne, alebo obsahuje iba medzery
}
MartaBrno
Profil *
Díky moc, borci

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