Autor Zpráva
umpa
Profil *
Učám se PHP, JS znám jen okrajově díky formulářům. Chtěl bych prosím vás nahradit tlačítko SUBMIT funkcí on click nebo něčím podobným, aby mi to fungovala na jedinej klik. Jde to?? Mne se to nedaří !!
Díky za každé info... Umpa

<form action="" method="post"> 

<method="post"> 
<SELECT NAME="pokus" size="1"> 

<option value="0">Vyber jméno 
<option value="1">karel 
<option value="2">petr 
</SELECT>
<input type="submit" value="odeslat">

</form> 
 


<?php 

if ($_POST) {
if ($_POST['pokus'] == 0) {
echo 'Přihlaste se prosím vašim jménem';
}
}


if ($_POST) {
if ($_POST['pokus'] == 1) {
echo 'Karel je tu';
}
}

if ($_POST) {

if ($_POST['pokus'] == 2) {
echo 'Cauky Peter ';        } } ?>
Nox
Profil
Nechápu, vždyť submit se přece aktivuje jedním kliknutím

Pokud bys chtěl při události onclick vyvolat odeslání formuláře, lze to takto
onclick="document.forms[0].submit()"


samozřejmě adresování formuláře je na ukázku, takto to odešle první formulář,
můžeš změnit číslo, případně dát formuláři attribut name a užít ["name_formulare"]
atd., viz http://www.jakpsatweb.cz/javascript/document-adresovani.html

edit: špatný obsah schránky:)
edit2: aha, při <selectu>, už chápu
ninja
Profil
na select dejte onchange="document.form[0].submit()". Idelane to nastavit pouze pokud bude vybrana jina hodnata nez dosavadni, ale to by vyzadovalo komplexnejsi pristup.
Chamurappi
Profil
Reaguji na Noxe a ninju:
document.form[0].submit()
Raději obecně: this.form.submit()
suvel
Profil
Jen tak na okraj (u JS jsem teprve v začátcích) - k čemu jsou u .submit ty závorky? Veškeré příklady, co jsem kde našel, je mají prázdné.
A můžu se pomocí onChange (nebo onClick) dostat na určité místo téhož formuláře? Třeba na jiný <INPUT>? Nebo mě to vždycky z formuláře jen vyhodí stejně jako <INPUT TYPE=SUBMIT>?
Předem dík za pomoc :-)
Senky
Profil
ninja
Nechapem preco komplexnejsi....ved predsa staci ked pouzije funkciu onchange iba na prvy a druhy option, ked na nulty neda nic tak si budu musiet vybrat...

suvel
No takze kazda stranka sa predsa musi nejako dat rozdelit, kazda cast suboru musi byt nejako samostatne dosiahnutelna, tak isto ako sa najprv napise. V JS je to o to jednoduchsie, ze to je tozdelene podla tagov, povedzme ze sa chces dostat na nejaky submit, ktory je vo forme, a to je v body...a tak dalej....cize to zacne slovom document. (ako keby <body>), potom das form. (iba ak je jediny na celej stranke, ak je ich viac je to trosku zlozitejsie...)..no a potom submit() (co je input - type=submit), a si na tomto tlacidle. Cele by to vyzeralo asi takto: document.form.submit() Potom si s nim mozse urobit co chces, stlacit ho, zrusit ho, dat mu styl..a podobne, ty ale chces nanho kliknut, cize das do option 1 a 2 dalej za value este aj onchange="document.form.submit()", alebo onclick="document.form.submit()", myslim ze by to malo byt jedno....dufam ze je to zrozumitelne...
suvel
Profil
senky
Perfektně vysvětleno - díky!!!
Ale, kčertu, k čemu jsou tam ty závorky, když jsem je vždycky viděl jen prázdné????
Senky
Profil
Neviem naisto, ale myslim, ze je to preto, ze je to funkcia, a kazda funkcia ma moznost vyuzivat premenne. JS tak isto ako PHP ma automaticke funkcie, ktore netreba definovat a same spravia robotu za teba a bez definovania nejakych premennych....asi to je preto takto.
Chamurappi
Profil
Reaguji na Senkyho:
cize to zacne slovom document. (ako keby <body>)
Ne. <body> je v „document.body“. Objekt document je v hierarchii nad všemi elementy.

potom das form.
To ovšem u documentu funguje, jen pokud se formulář jmenuje „form“ (tzn. má name="form").

no a potom submit() (co je input - type=submit), a si na tomto tlacidle
Potom si s nim mozse urobit co chces, stlacit ho, zrusit ho, dat mu styl
Ne. Metoda submit() je přímo na formuláři, nijak se netýká odesílacího tlačítka. Jednoduše řečeno je to funkce, která vyvolá odeslání, (skoro) stejně jako by ho vyvolávalo odesílací tlačítko.

ty ale chces nanho kliknut, cize das do option 1 a 2 dalej za value este aj onchange="document.form.submit()", alebo onclick="document.form.submit()"
Raději na <select>u, s událostmi na <option>u jsou problémy. Snaha vyvolat kliknutí na nějaké tlačítko nijak nesouvisí s onclickem. Atribut onclick obsahuje příkazy, které se vykonají při kliknutí na element s tímto atributem.

myslim, ze je to preto, ze je to funkcia, a kazda funkcia ma moznost vyuzivat premenne
Ne.

dufam ze je to zrozumitelne...
Nedoporučuji ti vzdělávat ostatní v oblasti JavaScriptu.


Reaguji na suvela:
k čemu jsou u .submit ty závorky?
Funkce v JS je de facto jen jiný druh proměnné. Můžeš je přesouvat z proměnné do proměnné i předávat jako argumenty. Pokud nepoužiješ závorky, pracuje se přímo s funkcí. Pokud je použiješ, funkce se vyhodnotí a pracuje se s jejím výsledkem.

A můžu se pomocí onChange (nebo onClick) dostat na určité místo téhož formuláře? Třeba na jiný <INPUT>?
Jestli tím myslíš přesun kurzoru na jiné místo, tak můžeš:
<select onchange="this.form.jménoPolíčka.focus()">
Klíčové slovo „this“ reprezentuje objekt <select>u, ten má ve vlastnosti „form“ (nesouvisí nijak s „document.form“ zmíněným výše) objekt <form>u, z něj se jde dostat na objekt jiného formulářového pole pomocí jméno a ten objekt má metodu focus().
suvel
Profil
Chamurappi
Mezitím už jsem to skoro pochopil sám, ale dík za perfektní výklad. Je super, že máš slitování se začátečníky :-))
_es
Profil
suvel
Ale, kčertu, k čemu jsou tam ty závorky, když jsem je vždycky viděl jen prázdné????

Tie zátvorky slúžia na iný účel, ako napríklad (a + b) * c ,
v tomto prípade to je operátor volania funkcie, teda;
f(); // zavolaj funkciu f, bez využitia jej návratovej hodnoty
x = g(); // zavolaj funkciu g a priraď jej návratovú hodnotu do x
h = g; // h bude rovnaká funkcia ako g
h(1); // zavolaj funkciu h, s jedným parametrom, bez využitia jej návratovej hodnoty

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:

0