Autor Zpráva
Lukáš
Profil *
Mám formulář a na něm spoustu textových INPUTů, když v některém z nich stisknu Enter, formulář se odešle, potřeboval bych udělat aby se po stisknutí enteru přešlo na další INPUT, pouze po odenterování posledního INPUTu odeslat formulář.

Určitě na to půjde napsat funkce, ale třeba někdo víte o elegantnějším řešení, něco jako: onEnter="nexttab". Ještě zkusím vytěžit pár webů, třeba něco najdu. Jestli je to nějaká banalita tak mě prosím nekamenujte :-))

Díky Lukáš
Webspy
Profil
já k přepínání do dalšího inputu používám tabulátor, enter je pro odeslání - to je takové "nepřirozené"
Michalek
Profil
Enter standardne slouzi pro odeslani formulare takze vetsina uziovatelu bude zmatena kdyz to nepujde
Lukáš
Profil *
To je pravda, jenže z praxe se různým uživatelům často stává že stisknou ENTER jaksi omylem aby potvrdili ten konkrétní INPUT a on se jin odešle celý formulář, takže ostatní položky jsou nevyplňené. Někteří se na tu stránku vrátí a dovyplní ji ale jiné to nenapadne.

Přitom mě napadá odpověď pro sebe sama, dát na událost onSubmit otázku jestli se má formulář opravdu odeslat. Kontrolovat jestli jsou vyplněny všechny položky nemá cenu, protože některé se vyplňovat skutečně nemusejí a jen by to mátlo.
Martin Kuželka
Profil
Lukáši, nebude tedy nejlepší kontrolovat pouze ty položky, které se vyplňovat musí?
Lukáš
Profil *
Většina položek je volitelných, takže se vyplňovat nemusí. Přesto když se některé vyplní, logicky by měly být vyplněny i jiné. Bohužel ten vztah je natolik složitý že by to musela kontrolovat umělá inteligence s velkou znalostní databází.

Asi bude nejlepší dát jednu z povinných položek jako poslední a tu kontrolovat.
Lukáš
Profil *
Pak budu mít jistotu (naději) že uživatel nepřehlédl žádnou z volitelných položek.
Yuhů
Profil
reaguji na původní dotaz:

na každém inputu budeš muset chytat událost onKeyDown nebo onKeyPress, nevím, co je lepší. Zjistit, jestli je stisknutá klávesa enter. Pokud ano, tak return false, focus následujícího elementu a ještě musíš říct formuláři, aby se neodesílal (onsubmit="return false", samozřejmě s nějakou podmínkou).

V praxi je lepší mít globální proměnnou, která ti hlídá, že se formulář neodešle (onsubmit="if (!promenna) return false"). Teprve při onfocus na poslením poli dát promenna = true. Pak to půjde odeslat.

Snad jsem srozumitelnej.
Lukáš
Profil *
Jojo, rozumím dobře. Něčeho takového jsem se obával :-). Asi to udělám tak, že budu kontrolovat jestli je vyplněná povinná položka která je těsně před Submitem a pokud nebude, zobrazím upozornění s dotazem jestli odeslat.

Každopádně díky za nápady.
Toto téma je uzamčeno. Odpověď nelze zaslat.