0

Niisiis, kui ma kirjutan nii...

<a href='boss.php' onclick='kustutakyss()'>Admin</a>

siis kuidas peaks välja nägema funktsioon vms, et OK vajutades ta läheks sinna lehele ja Tühistades ta jääks samale lehele, midagi muutmata :)

kerge küsimus tõenäoliselt aga ainult neile, kes lahendust teavad, mina ei tea :)

function kustutakyss()
{
var r=confirm("Oled kindel, et tahad kustutada?");
if (r==true)
  {
    alert("Kustutatud");
  }
else
  {
    alert("Kustutamine tühistatud!");
  }
}
flag

4 Answers

1

Funktsioon peaks kasutaja valiku oma väljakutsujale tagastama:

function kustutakyss() {
  var r = confirm("Oled kindel, et tahad kustutada?");
  alert(r ? "Kustutatud" : "Kustutamine tühistatud!");
  return r;
}

ja pärast seda peaks HTML seda tagastatud väärtust kasutama nii:

<a href="boss.php" onclick="return kustutakyss();">Admin</a>

Kui üks neist kahest returnist puudub, visatakse info kasutaja tehtud valiku kohta selles punktis minema ja ei jõua kunagi a-elemendi töötlemise juurde.

link|flag
2

Teised vastused ütlesid juba ära, kuidas asi käib, aga ma kirjutaks siin mõne sõnaga asju natuke rohkem lahti.

inline sündmuste defineerimise näol on tegu DOM level 0 sündmuste haldusega. Erinevalt DOM level 2 sündmustest on level 0 puhul tegu ainult kahetasemelise haldajaga - esiteks kasutaja poolt seatud tegevus onclick rakendumisel ja teiseks brauseri enda poolt kasutatav native tegevus. Sellisel juhul saab sündmuse edasist toimimist peatada, kui kasutaja poolt loodud onclick sündmus tagastab mittetõese väärtuse (peab olema false, mitte undefined vms).

Seega kui HTML koodis on defineeritud inline sündmus

<a onclick="tee_midagi;">

muudab brauser selle DOM level 0 sündmuseks

element.onclick = Function("tee_midagi;").bind(element)

ja kui kasutaja lingil klikib, siis käivitabki

if(element.onclick()!==false)
    element.fireNativeAction()

Nii et kui kasutaja seatud onclick sündmus tagastab väärtusena false, ei hakka brauser kunagi native tegevust rakendama (lingi puhul oleks selleks siis lehelt minema navigeerimine).

DOM level 2 (ja ka 3) sündmuste korral on asi selles suhtes paindlikum, et kasutaja saab lisada ja eemaldada suvalise arvu tegevusi sama sündmuse jaoks vs. DOM level 0 juures ainult üks kasutaja määratud tegevus. Kuid sellisel juhul tegevuste peatamiseks kõigest mittetõese väärtuse tagastamisest ei piisa. Seal tuleb spetsiaalselt öelda, et nüüd rohkem sama sündmuse tegevusi ei käivitata

element.addEventListener("click", function(event){
   tee_midagi;
   event.stopPropagation(); // peatab sündmuse edasise töötlemise
}, false);
link|flag
0

<a href="boss.php" onclick="kustutakyss(); return false;">Admin</a>
link|flag
proovisin, ei aidanud millegi pärast :) – Meelis Jul 10 at 0:29
0

<a href="boss.php" onclick="return confirm('Oled kindel?');">

Igatahes töötab nii IE kui Mozillas, kuid vist pole päris õige. See ei sisalda ainult alerti.

link|flag
Kui kinnitava teate puudumine välja arvata, on kõik õige. Ja kui see kinnitav teade oli niikuinii ainult silumise ajaks mõeledud, siis pole selle ärajätmine ka mingi kahju. – Ahto Truu Jul 15 at 13:45

Your Answer

Get an OpenID
or

Not the answer you're looking for? Browse other questions tagged or ask your own question.