Autor Zpráva
boogie
Profil *
ahoj,

- mam dva buttony, kt. predstavuji request na server a kazdy z requestu trva delsi dobu a behem cekani na vyrizeni requestu muze uzivatel v klidu kliknout na ten druhy button(a naopak) v domeni ze se nic nedeje....

- jak mu to zakazu?

- predstavoval sem si to timto zpusobem, ale to nefunguje.....


<script>
function zadost(formId){
document.getElementById(formId).submit();
zakazOnclick();
}


function zakazOnclick(formId){
document.attachEvent("onclick",spustZakazKlikani);
}

function spustZakazKlikani(){
event.srcElement.onclick = null;
}
</script>
<body>
<button onclick="zadost('ziskejJmena')">zadost 1</button>
<button onclick="zadost('ziskejPrijmeni')">zadost 2</button>
</body>
Dero
Profil
Uživatel by měl být informován, že se něco děje.

Jinak to můžeš řešit třeba takhle: button.onclick = function () { return false; }
boogie
Profil *
Dero: no to je prave problem, ale jak si dosahnu na ten button, chci rict, pri requestu kliknu na zadost 2, a pri kliknuti na zadost 1(button), jak na se na tento BUTTON dostanu, kdyz neznam jeho id, pozici... zadost 1, neni jedinym buttonem na strance...

Nechci mit funkci, kde nabiju document.getTagsByName('buttons') a pres vsechny iterovat disable=true...., zni to jako pohadka, ale tohle prestava fungovat, dokud nemas skryti BUTTON, INPUT[type=button](napr. v rodic. DIV ma style.display = "none"), a uz se to chova podivne....

Proto to chci resit tak, ze klidne necham uzivatele klikat na vsechny buttony, behem requestu, akorat ze ty onclick udalosti bych proste "zahazoval"... nenechal je proste obslouzit....

Jde to? Je to vubec v IE mozne?
Dero
Profil
boogie: Lze pouze zabránit výchozí akci. Provedení navázané JS fce bez iterace polem buttonů asi nikoliv.

window.onload = function () {
document.body.onclick = function () {
if (window.event.srcElement.tagName.toLowerCase() == "button") window.event.returnValue = false;
}
}

Jen nechápu, co je tak obtížného na iteraci všemi buttony. Pokud má rodičovský DIV display: none, tak se button stejně nezobrazí.

V případě, že by ses chtěl této iteraci vyhnout, tak snad jedině vázat na událost onclick nějakou univerzální obslužnou funkci, která v závislosti na stavu nějaké globální proměnné (requestProbiha: boolean) vrátí buď false nebo provede aplikační kód.
boogie
Profil *
Diky Dero....
xhammerx
Profil *
Ja bych to resil tim ze bys necim overoval dokud se to neodesle a nez by se odeslalo to pri kliku na prvni button,tak by ten druhej byl disabled,pak by na nej neslo kliknout :) Ale ted jsi nejsem jistej jestli se da button disablovat,ale snad jo,kdyz to jde u vetsiny formularovych prvku :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0