Autor Zpráva
pmg
Profil *
Dobrý den, potřeboval bych poradit jak javascriptem nastavit událost onsubmit tak, aby se chovala, jako kdybych v HTML přidal onsubmit="return funkce();". Když funkce() vrátí false, aby se v odesílání nepokračovalo. Jde to? Díky.
pmg
Profil *
Dobře, odpovím si tedy sám. Nechal jsem si hodnotu onsubmit vypsat a zde je řešení:

form.onsubmit=function() {return funkce(this)};


Do složených závorek lze v podstatě napsat hodnotu HTML parametru onsubmit.
peta
Profil
spolehlivejsi mozna new Function()
Zbytek kodu? Odkaz na stranku? Z tohoto se neda nic vycarovat. Mozna to v nejakem programu mam pouzite, ale bych musel hledat.

form.onsubmit=function() {return funkce(this)};
mno, nevim nevim s tim this, co z toho bude...
Kdyz delam objekt pres funkce, delam to takto:
function aaa(a,b,c)
{
this.a = a;
this.b = b;
this.c = c;
this.d = a*b;
this.pocitej = function () {this.d+=this.b;}
}

x = new aaa(1,2,3);
x.pocitej();
alert(x.d);
ah01
Profil
peta
spolehlivejsi mozna new Function()
Proč?

mno, nevim nevim s tim this, co z toho bude...
Jý myslím, že je to uplně jasný. form z toho bude.
pmg
Profil *
peta
spolehlivejsi mozna new Function()
S použitím operátoru new je to jistě čistší.

Zbytek kodu? Odkaz na stranku?
Myslím, že v tomto případě by se vše jen zesložitilo, proto jsem se ptal jen obecně.

ah01
Já myslím, že je to uplně jasný. form z toho (this) bude.
Přidal jsem to až do odpovědi, abych naznačil, že to tak jde: this skutečně odkáže na form.

Děkuji za odpovědi. Řeším nyní obdobný problém. S odkazy. Chtěl bych odchytávat kliknutí v dokumentu a zjistit, zda se kliklo na odkaz. Pokud by splnil určitá kritéria, provedla by se jiná akce, a odkaz by se neproklikl. Tentokrát i s kódem.

document.onclick=function(e)

{
e=(e || event);
object=(e.srcElement || e.target);

if(e.ctrlKey && object.tagName=="A") // Při držení klávesy Ctrl se kliklo na odkaz
{
// Jiná akce

return false;
}
}


Problém je opět stejný. Jiná akce se sice provede, ale odkaz se proklikne.
pmg
Profil *
Jak jsem zjistil, problém vězí v něčem jiném. Pokud za držení Ctrl kliknete na odkaz, otevře se standardně v nové záložce (Firefox). To je důvod, proč otevírání nelze zrušit.
Dále mě překvapilo, že detekci Ctrl lze provést na událost onclick, a to samé neplatí o keyCode, který se musí volat třeba na onkeydown (chtěl jsem kontrolovat jinou klávesu, aby nedošlo k uvedené kolizi s chováním prohlížeče).
Neznám lepší způsob než si stav uložit do proměnné. Jsou takové složitosti opravdu nutné?

var status;

document.onkeydown=function(e)
{
e=(e||event);

status=(e.keyCode==65); // status indikuje, zda je stisknuta klávesa a
}

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: