logi sisse meist KKK

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!");
  }
}

küsitud Jul 09 '10 at 17:53

Meelis's gravatar image

Meelis
5223


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

vastatud Jul 09 '10 at 20:29

Ahto%20Truu's gravatar image

Ahto Truu ♦♦
6596711

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

vastatud Jul 10 '10 at 17:18

Andris's gravatar image

Andris
2553310

edited Jul 10 '10 at 17:23

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

vastatud Jul 09 '10 at 18:57

ikaldus's gravatar image

ikaldus
1

proovisin, ei aidanud millegi pärast :)

(Jul 10 '10 at 00:29) Meelis
<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

vastatud Jul 15 '10 at 10:34

Arvi's gravatar image

Arvi
41113

edited Jul 15 '10 at 10:44

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.

(Jul 15 '10 at 13:45) Ahto Truu ♦♦
Sinu vastus
lülita eelvaade

Jälgi seda küsimust

By Email:

Pärast sisselogimist saad tellida muudatuse teavitusi siit

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *kaldkiri* või __kaldkiri__
  • **paks kiri** või __paks kiri__
  • link:[tekst](http://url.com/ "pealkiri")
  • pilt?![alt tekst](/path/img.jpg "pealkiri")
  • nummerdatud nimekiri: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • põhilised HTML märgendid on samuti toetatud

Pinu tööpakkumised

kõik pakkumised »

Küsimuse sildid:

×18

küsitud: Jul 09 '10 at 17:53

nähtud: 2,764 korda

viimati uuendatud: Jul 15 '10 at 10:44

Litsents: Creative Commons Attribution License | Kontakt: info@pinu.ee