Autor Zpráva
Fred
Profil
tohle mi chybuje a tvrdí, že getId('frm').submit() není funkce, a přitom funkci provede, jen ta konzole


var d=document;
function getId(id){return d.getElementById(id);}
function kontrola(){
if(getId('nick').value!="" && getId('desc').value!="" && getId('txt').value!=""){getId('frm').submit();}
}

lze nějak nahradit !="" ?
Fred
Profil
Je to na takovýho hybrida mezi jednoduchou návštěvní knihou a fórem http://xy.wz.cz/forum/index.php , jestli to doopravím bude to tam celý ke stažení, snad je to čisstější než běžný průměr u nás
habendorf
Profil
lze nějak nahradit !="" ?
To funguje dobře, v tom problém není.
Spíš se mi nezdá to getId('frm').submit() - nevím teda přesně co chceš, ale nemělo by tam být spíš něco jako getId('frm').action=....?
Leo
Profil
Osobne bych proste a jednoduse prejmenoval document.getElementById:

getId = document.getElementById;

Jinak misto volani submit na formulari bych radsi pouzit navratovou hodnotu false. Co se tyka !="" muzete vyuzit toho, ze JavaScript dela pretypovani prazneho retezce na false a psat primo

if (getId("nick").value && ...)

Leo
Fred
Profil
Zkouším, ale nepomohlo, bez toho submitu to nejde, zdá se, že by měl být v pohodě http://www.mozilla.org/docs/dom/domref/dom_html_ref.html . Je divný, v chybě vyběhne že getId('frm').submit() není funkce, ale přitom jí v klidu provede ?
Nemúže to být ještě tady ?
if(getId('sub')){getId('sub').onclick =function(){kontrola();return false;}} //kontrola je ta fce co v ní je to co chybuje
Fred
Profil
Měl jsem to dlouho otevřený pardon, document.getElementById to není dělá to s tím stejnou chybu .

pouzit navratovou hodnotu false to jsou zase ty základy, kterým nerozumím, to se dělá jak?
Fred
Profil
To přetypování prázdného řetězce funguje a zodpovídá dotaz v titulce, ale ten problém se submitem to nevyřešilo. Chybu to nehází jedině když tu funkci dám přímo na ten submit button onclick="kontrola();return false" , a to jsem právě chtěl úplně vyhodit mimo html, aby to nechybovalo v prohlížečích co podporují js jen zčásti . Jak se požívá návratová hodnota false ? Nevím co hledat
Fred
Profil
Hm, už jsem se asi chytnul, díky moc oběma.
Fred
Profil
Tak jsem nepokročil
pokud vyhodím getId('frm').submit()
a použiji return false formulář se vůbec neodešle
pokud vyhodím getId('frm').submit()
a použiji return true formulář se odešle i v případě, že povinné položky nejsou vyplněny
pokud to nechám jak to je hází to chybu (pokud je zaplá js konzole, nebo chybová hlášení v IE) při odesílání, ale vše proběhne tak jak má
Zdá se mi jako kdyby jednu chvíli prohlížeč nemohl najít to id při odesílání, to jak se to váže na ten submit který proběhne i bez js jako kdyby tam nebylo dost času, lze nějak posunout čas toho odeslání v php ?
adresa scriptu je tady http://xy.wz.cz/forum/res/forum-js.php
habendorf
Profil
Mě se pořád Frede zdá, že na to jdeš nějak divně. V tom formuláři asi máš odesílací tlačítko, že? Čili funkci , která kontroluje vstupy, bych navázal na událost onSubmit, nějak takhle:
<form action="neco.php" onsubmit="return kontrola()">,

kde funkce kontrola vrací hodnotu true nebo false v závislosti na vstupních datech.
Fred
Profil
To jo to funguje, ale jak ošetřím onload volaný přes addEventListener, nebo obj.attachEvent.
V prohlížečích kde to nejde,to bude házet alert, že tam ta funkce není, protože jí nenačte. např. IE4 , momentálně se to zobrazí bez problémů i v týhle vykopávce
habendorf
Profil
Tak to sorry, to musí někdo chytřejší, v tom se vůbec nevyznám :o(
Fred
Profil
Tak jsem zkusil getId('frm').setAttribute('onsubmit','return kontrola()'); což by měl být kompromis a chyba zůstává.
Omluva a díky všem můžete to zavřít, chyba byla jednoduchá, po použití hlavy mi došlo, že includovaná hlavička má v sobě onload funkci a volá v tý stránce kam se to zapisuje id frm, které tam není, ta stránka to hned přeměruje zpátky, proto ta chyba byla na jiné stránce než jsem myslel.
Nicméně použil jsem všechny rady, které jsem tu dotal a bylo to velmi přínosné. Návratové funkce i onsubmit return kontrola(); :-) .
Takže to je nakonec takhle
if(getId('frm')){getId('frm').setAttribute('onsubmit','return kontrola()');}
Díky moc
Fred
Profil
PS: bude to tam celý ke stažení
Fred
Profil
Ještě jednou díky. Kdyby někdo chtěl je to tam celý ke stažení
Fred
Profil
Stydím se stydím, pánové přiznávám měli jste pravdu, doufám že se nezlobíte. Takže definitivně opraveno submit() opravdu není potřeba, děkuji, můžete to zavřít.
Toto téma je uzamčeno. Odpověď nelze zaslat.