Autor Zpráva
kopi
Profil
dobrý den,
JS vůbec neovládám, ale tuším, že to, co potřebuji, bude umět právě JS. Pro Vás to asi bude velmi jedoduché :-) mám formuláře s poli:
jméno, příjmení, email. Potřeboval bych, když někdo napíše do pole "jméno" pepa, do pole "příjmení" Novák, tak aby se automaticky do pole "email" vepsalo pepa.novak.

Děkuji za každou radu.
Trejpa
Profil
kopi:
Jak moc jednoduché to má být? Pouhé přepsání textu ze dvou políček do třetího je triviální.

Ale vymyslet to blbuvzdorně závisí na zadání. Má se měnit velikost písmen? Mají se ze vstupů odstraňovat pro e-mail nedovolené znaky (mezery, tabulátory, @)? Má se odstraňovat diakritika? Jenom česká diakritika nebo i jiná? (Je třeba manuálně sestavit tabulku znaků, které a na co se budou převádět.) Co když má někdo e-mail s diakritikou? Má se zablokovat samočinná úprava políčka e-mailu, pokud již bylo jednou manuálně upraveno?

Co má být cílem takové samočinné úpravy? Jestli je to nějaké demo, budiž. Ale jestli něco podobného hodláš nasadit do ostrého provozu na formulář pro běžné lidi s libovolným e-mailem, tak se na to vybodni. Zhorší to použitelnost.
kopi
Profil
uplně ideální představa by byla taková, že na začátku formuláře jsou checkboxy např. seznam, centrum, gmail
pak jméno a příjmení a email.

Pokud uživatel zaškrtne seznam - do pole email se vytvoří jmeno.prijmeni@seznam.cz, pokud zaškrtne gmail, bude tam jmeno.prijmeni@gmail.com.

Email by měl být malými písmeny bez diakritiky.

Děkuji
Keeehi
Profil
Ale co když se jmenuješ Pepa Novák, ale email máš kopi@seznam.cz?
Trejpa
Profil
kopi:
To je hodně naivní představa, že si lidé tvoří adresy ve tvaru jmeno tečka prijmeni zavináč nefiremni_domena_sluzby, a že jim samočinné doplnění e-mailu přesně v tomto tvaru usnadní práci. Naopak je zmate – místo rutinního vyťukání adresy budou muset kontrolovat a opravovat, trefovat se na znak, vymazávat…

Ale kdo chce kam… příklad
kopi
Profil
Jedná se o interní firemní systém. a při zakládání nových zaměstnanců je prostě dané, že ten email bude mít tvar jmeno.prijmeni@neco.cz, takže když personalistka zaškrtne, že zaměstnanec patří na pobočku 1 - email bude jmeno.prijmeni@pobocka1.cz, když na pobočku 1, tak jmeno.prijmeni@pobocka2.cz. Další funkcí by měla být kontrola duplicit, kdyby byly dva se stejným jménem i přijmením, aby to navrhlo jinou variantu emailu. Tak si ted říkám, jestli by nebylo jednodušší prostě ten mail napsat manuálně :D Každopádně děkuji.
Keeehi
Profil
kopi:
Toto je jeden z mála případů, kdy by to mohlo být vhodné.
kopi
Profil
tak to jsem rád, že mi to aspoň někdo schválil :) mohl byste mi ukázat, jak se řeší ten návrh emailu v případě duplicit? v případě, že bysme měli třeba dva petry nováky? první registrovaný by měl petr.novak@neco.cz a druhý by měl petr2.novak@neco.cz? já jsem v Javascriptu opravdu ztracený. Děkuju
Trejpa
Profil
kopi:
Tohle nelze dělat (čistě) v JavaScriptu, který nemá podle čeho zjistit, zda existuje nějaká e-mailová adresa.

Někde na serveru poběží databáze (seznam) adres a nějaký serverový skript (třeba v PHP), který na základě odeslání požadavku ze stránky (odesláním formuláře, Ajaxem) porovná nově vytvářenou adresu s existujícími a buď ji vytvoří (dosud neexistovala) nebo oznámí chybu s potřebou upravit formulář.
kopi
Profil
tomu principu rozumím, jen jsem myslel, že by to šlo zjistit už při zadání jména a příjmení. Takže takhle to nejde? prostě tam musí být mezikrok v podobě odeslání formuláře? Nebo Javascript umí procházet databázi a porovnávat hodnotu inputu ihned bez potřeby odeslat formulář?
Trejpa
Profil
kopi:
JavaScript se umí pomocí Ajaxu spojit s PHP skriptem, vyžádat si data a pokračovat i bez odeslání formuláře. Pořád ale potřebuješ program (PHP), který požadavek skriptu zpracuje proti databázi adres (minimálně zjištěním duplicity - ano/ne). Samotné vytvoření adresy může být reakcí až na odeslání.

Rozhodně bych doporučil nechat závazné ověření duplicity teprve při ukládání na serveru - vrátí stejný formulář (vyplněný) s popsanou chybou a zvýrazněným políčkem e-mailu. Ajaxovou kontrolu bych použil jako informativní pro pohodlí uživatelů. Bude to jistější, kdyby náhodou:
1) vyplnili dva uživatelé formulář stejně ve stejnou chvíli,
2) pokusil se jeden uživatel odeslat formulář podruhé, třeba kvůli chybě,
3) kdyby Ajax selhal,
4) kdyby někdo podvrhl/přepsal data ve formuláři.

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: