Autor Zpráva
jpsk
Profil
Snažil jsem se v názvu zkratkovitě uvést problém:
Mám formulář, kde jsem chtěl nějak navázat jeho událost onSubmit na kliknutí na jedno ze dvou tlačítek (Uložit, Smazat) -> Smazat, abych před samotným smazáním dal uživateli možnost se zamyslet, je to pro učitelky... :) Chtěl jsem tedy dát na to tlačítko confirm, resp. funkci, která udělá confirm a jeho výsledek uloží do nějaké bool proměnné, jejíž hodnotu budu používat pro ten onSubmit formuláře. Jenže mi to nefunguje (nezobrazí se mi ani ten confirm, možná proto, že neumím udělat globální proměnnou a formulář se rovnou odešle). Nechci sem psát celej php skript, protože formulář generuju ve třídě a bylo by to strašně nepřehledné. Byl by někdo té dobroty a popsal mi nějaký postup, jak to udělat po stránce toho javascriptu?
Someone
Profil
<form onsubmit="return confirm('Opravdu smazat?')">
    <input type="submit" value="Smazat">
</form>
jpsk
Profil
Děkuji za reakci, ale jak jsem psal, mám tam dvě tlačítka, confirm potřebuju mít jen na jednom. Tenhle příklad mi udělá hlášku 'Opravdu smazat?' i po kliknutí na tlačítko uložit... :(
Potřebuju nějak při tom onsubmit rozlišit, na které tlačítko se kliklo a pokud se kliklo na Uložit, tak poslat vždycky do onsubmit hodnotu true


Představoval jsem si to nějak takto, ale pravděpodobně potřebuju nějak tu proměnnou ret udělat globálně dostupnou, což neumím...:
<script>
var ret = false;
function ConfirmForm(x) {
if(x) ret = confirm('Opravdu smazat?');
else ret = true;
}
</script>
<form onsubmit="return ret">
...nějaká pole pro editaci dat z db...
    <input type="submit" value="Uložit" onclick="ConfirmForm(0)">
    <input type="submit" value="Smazat" onclick="ConfirmForm(1)">
</form>
_es
Profil
jpsk:
Ako má server vedieť, či to má „Uložit“ alebo „Smazat“ keď si tie odosielacie tlačítka nepomenoval? Malo by to byť asi nejako takto:
<input type="submit" value="Uložit" name=u>
<input type="submit" value="Smazat" name=s onclick="return confirm('Opravdu smazat?')">
jpsk
Profil
_es:
Díky za reakci, vím že jsem měl napsat skript komplet, aby nedocházelo k těmto nejasnostem, ale když sem nakopíruju celý skrip, tak mě nakopete :), tak jsem dal jen to nejdůležitější. Takže jako by tam v mém příkladu bylo name, jak píšeš. A na ten onclick vůbec nedojde (nebo dojde, ale neprovede se confirm a vždycky je nakonec v onsubmit true)
(Jinak jsem si představoval, že script vyhodnotí to 0/1, které posílám jako parametr při volání fce)
_es
Profil
jpsk:
Formulár s elementmi v kóde v [#4] funguje tak, ako si chcel. Potom udalosť onsubmit nepotrebuješ. Vyskúšal si to?
jpsk
Profil
_es:
Ano, teď jsem to vyzkoušel. Sice jsem po kliknutí na Smazat vyvolal confirm (onclick), ale když tam není ta událost onsubmit, tak i když je výsledkem confirm false, formulář se nakonec odešle. Vypadá to, že výsledek toho confirm tlačítka přeci jen budu muset předávat do onsubmit formuláře
_es
Profil
jpsk:
tak i když je výsledkem confirm false, formulář se nakonec odešle.
V akom prehliadači? Ja som skúšal:
<form>
<input name=x>
    <input type="submit" value="Uložit" name=a>
    <input type="submit" value="Smazat" name=b onclick="return confirm('Opravdu smazat?')">
</form>
A funguje to presne tak, ako si chcel.
Chamurappi
Profil
Reaguji na jpska:
Tipnul bych si, že jsi do svého onclicku napatlal confirm bez returnu, proto nemá návratová hodnota dialogu vliv.
_es
Profil
Chamurappi:
Alebo je to odoslanie spôsobené nejakými JavaScriptovými „zlepšovákmi“.
jpsk
Profil
Ano, máte pravdu, oběma děkuji a omlouvám se, samozřejmě jsem zapomněl do toho tlačítka dát na onclick ten return, čili jsem vlastně jen provedl confirm, ale jeho výsledek jsem nepoužil... (lama)

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: