« 1 2 3 »
Autor Zpráva
quatzael
Profil
Zkoušel jsem najít nějakej script pro automatické vkládání mezery do inputu pro PSČ rovnou při psaní, nic takovýho jsem nenašel, tak jsem zkusil napsat kdysi tohle, ale nezdá se mi to úplně ok. Hlavně bych to potřeboval nějak ošetřit pro vkládání (ctrl + v):

Nemáte prosím někdo nějakej nápad jak tohle vyřešit?

V tagu mám tohle:
onkeypress="insertgap(this.id,this.value);" onchange="insertgap(this.id,this.value);"

Chtěl jsem tam ještě přidat omezení na čísla, ale potom se zase nerozběhne na funkce insertgap:
onkeypress="return !isNaN(String.fromCharCode(event.charCode || event.keyCode)); insertgap(this.id,this.value);" onchange="insertgap(this.id,this.value);"


function insertgap(id,value)
{
var txt = value;
var txt = txt;
var firstspace = txt.indexOf(" ");
txt = txt.replace(" ","");
var tl = txt.length;

 if (tl > 3)
{
txt = txt.replace(" ","");
var tll = tl + 1;
var txta=txt.substring(0,3);
var txtb=txt.substring(3,tll);
var txtc=" ";
txt = txta.concat(txtc);
txt = txt.concat(txtb);
document.getElementById(id).value = txt;
}
else
{
document.getElementById(id).value = txt;
}


 if (tl == 3)
{
txt = txt.replace(" ","");
document.getElementById(id).value = txt + " ";
}
else
{
document.getElementById(id).value = txt;
}
}
Moderátor Chamurappi: Před otazníkem se nedělá mezera.
Chamurappi
Profil
Reaguji na quatzaela:
Upravování vstupů pod rukama je hnus, zejména takhle malicherné. Nech uživatele, ať si píše, co chce, a pak si to přeber, jak chceš, na straně serveru.

insertgap(this.id …)“ … „document.getElementById(id)
Jaký smysl má zjistit si ID a pak podle něj hledat element, ze kterého jsi ho zjistil? Proč si nepředáváš jako argument přímo this?

onkeypress="return !isNaN(String.fromCharCode(event.charCode || event.keyCode));
Příkaz return ukončuje běh funkce.
quatzael
Profil
Chamurappi:
Podle mě to není hnus, když to správně funguje..

Jaký smysl má zjistit si ID a pak podle něj hledat element, ze kterého jsi ho zjistil?
Mám pocit, že chceš, abych řekl, že žádný.

Já jsem tuhle funkci psal asi před rokem a půl, když jsem ještě úplně začínal, takže se právně k ní vracím, abych tam opravil ty chyby a fungovalo to ok.
jenikkozak
Profil
quatzael:
Podle mě to není hnus, když to správně funguje..
Spprráávvnnáá ffuunnkkccee jjee ttaakkoovváá,, žžee ssee uužžiivvaatteellii ppííššee ttoo,, ccoo cchhccee oonn ssáámm.......
quatzael
Profil
Tak jsem to už vyřešil a zdá se, že se to chová úplně ok!!

function insertgap(id,value)
{
var txt = value;

txt = txt.replace(/ /g,"");
var tl = txt.length;

if (tl > 3)
{
txt = txt.replace(" ","");
var tll = tl + 1;
var txta=txt.substring(0,3);
var txtb=txt.substring(3,tll);
var txtc=" ";
txt = txta.concat(txtc);
txt = txt.concat(txtb);
document.getElementById(id).value = txt;
}
else
{
document.getElementById(id).value = txt;
}

if (tl == 3)
{
txt = txt.replace(" ","");
document.getElementById(id).value = txt + " ";
}
else
{
document.getElementById(id).value = txt;
}
}

$("#input-psc").keypress(function(e){
switch (e.which)
{
case 8:
break;
case 32:
return false;
break;
default:
insertgap("input-psc",$(this).val());
return !isNaN(String.fromCharCode(event.charCode || event.keyCode));
}
});

Jenom by mě zajímalo jestli by nějak šlo vložit do tohoto řádku:
return !isNaN(String.fromCharCode(event.charCode || event.keyCode));
nějak to omezení, aby tam nešlo psát mezery (e.which == 32)

Ale myslím úplně mimo tu funkci, tak aby to šlo mít samotný v HTML tagu..
Chamurappi
Profil
Reaguji na quatzaela:
Podle mě to není hnus, když to správně funguje
Takže když napíšu čtyři číslice, uvědomím si, že jsem se spletl, a dvakrát zmáčknu backspace, budou v políčku dvě číslice? Nebo když si po čtyřech cifrách uvědomím, že jsem nenapsal tu první, vrátím se na začátek a dopíšu jí, dopadne to dobře?

zdá se, že se to chová úplně ok!!
Funguje ti to ve všech prohlížečích? Nemyslím si, používáš globální objekt event.

nějak to omezení, aby tam nešlo psát mezery (e.which == 32)
Proč chceš zakazovat psaní mezer?

Vážně moc nechápu, jak podobný skript pomůže správnému vyplnění formuláře. Vstupy klidně kontroluj, jak chceš, ale neházej uživateli klacky pod prsty.
quatzael
Profil
Chamurappi:
... dopadne to dobře?
Ma to ještě nějaký mouchy, Musím to ještě doladit, jenže zatím moc nevím jak..
Funguje ti to ve všech prohlížečích? Nemyslím si, používáš globální objekt event .

Vypadá, že to funguje. Jestli myslíš starší prohlížeče, tak tam jsem to úplně netestoval..

Jak použiju ten globální objekt?
Proč chceš zakazovat psaní mezer?
Mezera, která tam ma být, se ma vytvořit automaticky. Další mezery tam nemají co dělat..
Plaváček
Profil
quatzael:

Možná mi do toho moc není, protože nejsem profík na Javascript, ale zeptat se musím. Proč ztrácíš čas řešením problému, který vzato z praktického hlediska žádným problémem není?
jenikkozak
Profil
quatzael:
Celé to je nejspíš hrozně nelogické. Pokud chceš s tou hodnotou pracovat na serveru, stejně budeš muset znovu ověřovat, zda jsou data ve formátu, který očekáváš. A to proto, abys zamezil bezpečnostní chybě v případě, že uživatel nebude mít zapnutý JS nebo úmyslně pošle závadná data, případně proto, abys zajistil správné vypsání adresy třeba na složence.
Pokud PSČ hodláš ukládat do databáze, stejně tu mezeru budeš vyhazovat, abys mohl hodnotu uložit jako celé číslo. Proto je s prominutím pitomost uživateli pod rukou cpát do formuláře nějaké znaky navíc, když je stejně ve výsledku nepoužiješ.
V případě, že s daty opravdu pracuješ jen v JS bez použití serveru, je lépe nechat data ve formuláři tak, jak je uživatel píše, a pro další využití si je pak přeformátovat dle libosti. Je velmi nepříjemné, když se nějaký prvek chová jinak, než uživatel očekává. Když mu budou pod rukama přibývat a mizet mezery, bude si myslet, že špatně mačká klávesy nebo že má problém s klávesnicí (u bezdrátových klávesnic se to stává). Nenapadne ho, že kdosi dvoutečkovej mu ty údaje zlomyslně mění. I kdyby šlo o nějaký užitečný doplněk (což v tomto případě není), uživatele zmate, protože ho nezná z jiných webů.
Návštěvníkům můžeš dojem z vyplňování jenom zkazit. Určitě ho nezlepšíš.
Chro
Profil
Jen bych chtěl doplnit, že např. Poláci používají v PSČ pomlčku. Na tom si už taky vývojáři aplikací vylámali zuby (čti: nešlo zadat).
Str4wberry
Profil
No, teoreticky by doplnění mezery mohlo zlepšit přehlednost a snížit risiko špatného zadání.

Nedávno jsem to ale viděl v nějaké Google službě při požadavku na zadání telefonního čísla a musím říct, že mě to spíš mátlo.
quatzael
Profil
Chro:
Jen bych chtěl doplnit, že např. Poláci používají v PSČ pomlčku.
Já to ani náhodou nedělám pro Poláky. Takže tohle je úplně irelevantní.

Plaváček:
Proč ztrácíš čas řešením problému, který vzato z praktického hlediska žádným problémem není?
Je to jedna z věcí, u který jsem přesvědčen, že pomůže zpříjemnit vyplňování formuláře. Když někdo přepisuje PSČ, tak většinou ho má ve formátu 123 45, když se mu to takhle automaticky objeví při vyplňování, tak vizuální kontrola pro uživatele je daleko rychlejší. Navíc to v něm víc vyvolá důvěru v ten formulář, že každá kolonka bude správně zpracována.

jenikkozak:
Je velmi nepříjemné, když se nějaký prvek chová jinak, než uživatel očekává.
Naprostá většina uživatelů nejsou programátoři, tzn. že neví, že existuje a co dělá nějaký javascript. Oni nebudou zmatení z toho, že když právě vyplňují PSČ, že se jim po třetím znaku objeví mezera a čtvrtá číslice se jim objeví automaticky za mezerou, protože takhle píše většina lidí PSČ normálně, a když stisknou mezeru po třetím čísle sami, tak se nic nestane, furt tam bude ta mezera..

Já tam kontrolu celýho formuláře, jednak javascriptem tak i následně na straně serveru. Mám tam průběžnou kontrolu tak, že když klient vyplní správně PSČ (tzn. jen takové, které opravdu existuje), tak se mu input odfajkne, že je zadaný správně a v selectu pod ním se mu načte seznam měst a obcí, které pod dané PSČ spadá. Při odesílání se zkontroluje jestli jsou všechny inputy správně vyplněné a potom se to ještě zkontroluje na straně serveru. Tohle mám docela dost vychytaný. A to jestli klient správně vyplnil input pozná hned po zadání, že se mu tam objeví ten check-off obrázek. Nemám to udělaný tak pitomně, jak to mají někde, že stačí input jen focusovat a potom z něho hned bez jakýhokoli vyplňování odejít, a hned se objeví rudá výstraha, že je input špatně vyplněný.

To mám až při odesílání formuláře, že se červeně zvýrazní inputy, které byly špatně vyplněné nebo nebyly vyplněné vůbec..

Str4wberry:
No, teoreticky by doplnění mezery mohlo zlepšit přehlednost a snížit risiko špatného zadání.
Pro to taky dělám, protože sdílím stejný názor.


Chamurappi:
Jinak ten můj kód má ještě nějaký chyby. Musím je opravit. To, že backspace maže i tu mezeru a nemizí sama by zase nebylo tak hrozný, ale rozhodně je lepší když to tam nebude.

Horší je tom když chce psát někdo doprostřed. Hodí to ten znak automaticky na konec a ještě to někdy udělá bordel s tou mezerou..

Chamurappi:
ale neházej uživateli klacky pod prsty.
To není házení klacků pod prsty. Je to naopak ulehčení práce a zpřehlednění formuláře.
Jiný aplikace dělají podobný ("nepředvídatelný") věci. Jakože třeba když vyplňuješ někde autorizační kód, kterej se rozkládá na více inputů vedle sebe, tak Tě to taky u některých aplikací automaticky hodí do dalšího inputu, i přesto, že to není standardní chování.

jQuery Datepicker taky dovolí psát jen to co je ve formátu datumu (tedy jen číslice a tečky). A pro normální uživatele je to daleko pohodlnější než normální nenaformátovaný input. Nikdo není rozhozen, nikdo není zmaten tak, že by kvůli tomu neuměl vyplnit formulář.
han5vk
Profil
Napríklad aj to preskakovanie inputov mne osobne vadí. Napríklad ČSOB to má pri zadávaní SMS kódu. Som zvyknutý skákať po inputoch pomocou tabu, takže napíšem jedno trojčíslie (z troch), stlačím tab, a hľa, som už na treťom, WTH?

Podľa mňa takéto snahy akurát zaťažujú ako developera, tak aj používateľa, a pritom ich nikto nepotrebuje. Stačí (napríklad do placeholderu) uviesť očakávaný formát, prípadne to aj v JS priebežne overovať, ale stačí to len na serveri. Ak niekto chce poslať haluz na server, pošle ju aj keď mu dáš hocijaké klacky pod prsty.

A tí, ktorí chcú službu len použiť budú radi, ak si budú môcť zadať formát, na ktorý sú zvyknutí. Nie aby si im ho nútene prepisoval pod prstami.
jenikkozak
Profil
quatzael:
Naprostá většina uživatelů nejsou programátoři, tzn. že neví, že existuje a co dělá nějaký javascript. Oni nebudou zmatení[...]
Například já nejsem programátor. Dovolím si tedy mluvit za nás neprogramátory – mate nás to.
Mimochodem tu implikaci máš blbě. Nejsem programátor, ale vím, že JS existuje a co dělá.

Nemám to udělaný tak pitomně, jak to mají někde, že stačí input jen focusovat a potom z něho hned bez jakýhokoli vyplňování odejít, a hned se objeví rudá výstraha, že je input špatně vyplněný.
To jsi šikovný. Ale proč kvůli tomu uživatele mateš při vyplňování inputu? Aby byl celkový dojem s používání webu neutrální?

Ale je mi to dost jedno, je to tvůj web, takže si na něm dělej, co uznáš za vhodné.
quatzael
Profil
han5vk:
Napríklad ČSOB to má pri zadávaní SMS kódu.
To je aplikace, kterou uživatelé používají častěji, takže se předpokládá, že si zapamatuješ jak se to chová a přihlašování tak muže probíhat daleko rychleji.

A tí, ktorí chcú službu len použiť budú radi, ak si budú môcť zadať formát, na ktorý sú zvyknutí.
Ale oni, když vidí formulář poprvé, nebudou vědět, že si můžou zadat formát jaký chtějí. O to právě jde.
Vždycky, když uživatel něco vyplňuje, se musí zamýšlet u každýho inputu jestli tam zadává správný formát (tzn. takový, který ta aplikace příjme).
Uživatel nemůže vědět, že ve formuláři může zadat například dva formáty. Buď je vedle inputu nápověda jak políčko vyplnit (já jí tam vždycky mám), nebo má uživatel smůlu nějak to vyplní, dá odeslat a potom zjistí, že třeba rodné číslo mělo být s lomítkem, datum narození ve formátu dd.mm.rrrr, psč bez mezery apod. A když uvidí, že mu tam mezera automaticky naskočila, tak ví, že se nemusí tímhle problémem zabývat, protože už má jasno, že ta mezera tam má být. A nemusí tak formulář vyplňovat na podruhé.


jenikkozak:
Například já nejsem programátor. Dovolím si tedy mluvit za nás neprogramátory – mate nás to.
To je úplně jedno, já taky nejsem programátor a mě to nemate. Naopak mi to zlehčuje vyplňování formuláře, protože hned zjistím jestli to mám vyplňovat s mezerou nebo bez.

Nejsem programátor, ale vím, že JS existuje a co dělá.
Já jsem to myslel zjednodušeně, jako že programátoři = zasvěcení. Normální uživatelé jsou běžně na znalostní úrovni, tak že někdy zaslechli slovo javascript, někteří možná ví, že je to něco v prohlížeči, ale to je tak asi všechno.

Pro uživatele je nejdůležitější, když je pro ně formulář co nejpřehlednější a nemusí si dělat obavy, že ho špatně vyplní a po odeslání se jim to celý smaže a musí to kvůli nějaký chybě celý vypisovat znovu.
To, že jim nepůjdou psát písmenka v inputech kde mají být pouze číslice, si myslím, že není vůbec žádná tragédie. Naopak, kdyby si náhodou spletli input, tak aspoň zjistí, že je něco špatně..
Chamurappi
Profil
Reaguji na quatzaela:
Naprostá většina uživatelů nejsou programátoři
Tím spíš je to zblbne. Z nějakého důvodu se domníváš, že běžným uživatelům kvůli profesionální deformaci rozumíme méně než ty.

když stisknou mezeru po třetím čísle sami, tak se nic nestane
Hm, to zní velmi intuitivně. Proč přesně se nic nestane?

pro normální uživatele je to daleko pohodlnější než normální nenaformátovaný input
Máš to změřené nějakým A/B testem?

Nikdo není rozhozen, nikdo není zmaten tak, že by kvůli tomu neuměl vyplnit formulář.
A tohle máš také změřené?

když uvidí, že mu tam mezera automaticky naskočila, tak ví, že se nemusí tímhle problémem zabývat, protože už má jasno, že ta mezera tam má být
To je ale krásná úvaha. Zkus si změřit, jak ve skutečnosti funguje.

Ad ČSOB: „To je aplikace, kterou uživatelé používají častěji, takže se předpokládá, že si zapamatuješ jak se to chová a přihlašování tak muže probíhat daleko rychleji.
Hlavně si uživatel musí zapamatovat, že se při kliknutí na tlačítko pár sekund vůbec nic neděje a že během té doby nemá zkoušet klikat znovu, protože tím se to rozbije. V tomhle je to ukázkově hloupé.
_es
Profil
Chamurappi:
V tomhle je to ukázkově hloupé.
Ešte „lepšie“ sú formuláre, kde sa odosielacie tlačítko chová inak ako stlačenie enteru v textovom inpute. Trebárs je odoslanie klávesou enter znefunkčnené a po zúrivom stláčaní enteru a nadávaní na to, že to je rozbité, treba prejsť z klávesnice na myš a skúsiť kliknúť na nejaké esteticky „vylepšené“ tlačítko.

Skúsil som <input type=date> v Chrome. Pri zadávaní roka klávesnicou treba zadať rok dostatočnou rýchlosťou. Zamyslieť sa pred zadaním poslednej číslice nad tým, či išlo o rok 1998 alebo 1999 nie je možné - políčko sa vynuluje a posledná číslica sa zadá na prvé miesto a návštevník je preorientovaný na zadávanie dátumov ďalekej budúcnosti. Opera zadávanie klávesnicou neumožňuje vôbec. Chápe niekto takéto „zlepšováky“?
quatzael
Profil
Chamurappi:
Hlavně si uživatel musí zapamatovat, že se při kliknutí na tlačítko pár sekund vůbec nic neděje a že během té doby nemá zkoušet klikat znovu, protože tím se to rozbije.
Ještě před rokem to ČSOB nefungovalo skoro vůbec. Respektive sporadicky, přihlašoval jsem se třeba až na pátej pokus. Když jsem tam volal, že mám problém, tak mi sdělili, že všechno je ok. Většinou se šlo přihlásit jen z Mozilly (na několikátej pokus). Chovalo se to nevyzpytatelně, teď už je to ok.

Funguje ti to ve všech prohlížečích? Nemyslím si, používáš globální objekt event.
Co je špatně na používání globálního objektu. Nějak to nechápu cos tím myslel..
Str4wberry
Profil
Reakce na _es:
Chápe niekto takéto ‚zlepšováky‘?

Na druhou stranu, ten kalendář řešený prohlížečem je konsistentní napříč weby. A nemělo by se u něj stát, že webová aplikace zadaný datum špatně pochopí. Obyčejný <input> bude dost náchylný na datum ve špatném tvaru (nebo bude muset mít asi tak odstavec vysvětlujícího popisu).
_es
Profil
quatzael:
Nějak to nechápu cos tím myslel.. (Chamurappi)
No asi to, čo napísal, že či si si to vyskúšal vo všetkých prehliadačoch. Vyskúšal?

Str4wberry:
Myslel som spôsob zadávania dátumu klávesnicou, nie výsledný textový reťazec odosielaný serveru.
quatzael
Profil
_es:
No asi to, čo napísal, že či si si to vyskúšal vo všetkých prehliadačoch. Vyskúšal?
No je pravda, že Mozille se nějak nelíbí tohle:
!isNaN(String.fromCharCode(event.charCode || event.keyCode))

Křičí to, že událost není definována.
Ale tohle zrovna je kód od Chamurappiho..

Psal jsem, že nechápu co tím myslel. A tím myslím tedy jak to jinak udělat, abych použil event, nebo co to je, který běží ve všech prohlížečích..
_es
Profil
quatzael:
Ale tohle zrovna je kód od Chamurappiho..
Tak si ten jeho kód asi nejako zle aplikoval.
Tori
Profil
quatzael:
Navíc to v něm víc vyvolá důvěru v ten formulář, že každá kolonka bude správně zpracována.
Tak soudíte na základě statistiky, zkušenosti, nebo zbožného přání? Jinak též se přidávám ke skupině, kterou by takovéhle přepisování pod rukou silně otravovalo (rukou píšu PSČ a tel.čísla s mezerou, slovenské pevné linky i s lomítkem, na stroji všechno bez mezer).

Vždycky, když uživatel něco vyplňuje, se musí zamýšlet u každýho inputu jestli tam zadává správný formát (tzn. takový, který ta aplikace příjme).
Zase spadám do nějaké nestandardní části uživatelů - očekávám, že pokud není výslovně uvedeno, jak políčko vyplnit, tak že zadám formát jaký vyhovuje mně a aplikace (pokud ji nepsal pedant) si s tím poradí. Zamýšlet se začnu až tehdy, když aplikace začne neočekávaně blbnout, že chce nějaký konkrétní formát (např. myší označím někde tel.číslo, zkopíruju a ejhle, nevložilo se celé, protože si programátor vynutil zadání pouze a přesně devíti znaků).
Argumentace autorizačními kódy u bank a automatickým přepínáním políček je taky trochu na vodě - když chci poslat nájem / socku / cokoliv, tak se bez banky neobejdu. Není-li váš web nepostradatelný do podobné míry jako netbanking, tak uživatelé mohou mít menší ochotu snášet neočekávané.
Joker
Profil
Plaváček [#8]:
Možná mi do toho moc není, protože nejsem profík na Javascript, ale zeptat se musím. Proč ztrácíš čas řešením problému, který vzato z praktického hlediska žádným problémem není?

Mám z toho stejný dojem: Složité řešení neexistujícího problému.
Když uvážím, čas strávený tvorbou a úpravami kódu a touto diskusí, padlo alespoň tak půl dne práce na mezeru v PSČ.

quatzael:
Naprostá většina uživatelů nejsou programátoři, tzn. že neví, že existuje a co dělá nějaký javascript.
A v tom je právě problém.
Já jako programátor asi rychle pochopím, že tam je nějaký přiblblý JavaScript. Pak se mu buď přizpůsobím, nebo, když mě hodně otravuje, ho obejdu.
Běžný uživatel o JS neví, jen vidí, že to políčko nefunguje tak jak by očekával, některé funkce tam nejdou, mizí, objevují se a přesouvají se mezery. Je zmatený.

Je to jedna z věcí, u který jsem přesvědčen, že pomůže zpříjemnit vyplňování formuláře.
A hned následující věta:
Když někdo přepisuje PSČ, tak většinou ho má ve formátu 123 45, když se mu to takhle automaticky objeví při vyplňování, tak vizuální kontrola pro uživatele je daleko rychlejší.
Takže:
Napíšu 123, potud OK, pak mezeru. Nic se nestane. Mám rozbitý mezerník? Ještě párkrát zkusím napsat mezeru, pořád nic. Tak to vzdám a napíšu 45. Objeví se mezera a 45.
Neřekl bych, že mi to zpříjemnilo vyplňování formuláře.

Další věci (vycházím z kódu v [#1]):
• Zahození stisku jiné klávesy než číslice zahodí třeba i stisk C a V. Na políčku nefunguje kopírování a vložení přes ctrl-C a ctrl-V. To vidím jako hodně velký nedostatek.
• Naopak přes kontextové menu a Vložit tam jde vložit cokoliv aniž by se ten skript aktivoval, protože to nevyvolá událost onkeypress.
• Pokud se aktivuje ten skript, nově napsaná číslice se připojí vždy na konec, bez ohledu na pozici kurzoru v poli. Příklad: Chci zadat 12345. Omylem zadám 1345. Kliknu za jedničku, napíšu 2 a vznikne „134 52“. To je taky zásadní nedostatek.
• Mezeru jde přes backspace nebo delete smazat, ale pak už ji nejde (intuitivním způsobem) vložit zpátky.
quatzael
Profil
Joker:
Další věci (vycházím z kódu v [#1]):
Už jsem to trochu doupravil, takže je to teď jinak.

Na políčku nefunguje kopírování a vložení přes ctrl-C a ctrl-V.
To tam normálně funguje. Pokud se nepletu tak to fungovalo i v tom původním kódu. Ty jsi to zkoušel, že Ti to nefunguje?

Naopak přes kontextové menu a Vložit tam jde vložit cokoliv aniž by se ten skript aktivoval, protože to nevyvolá událost onkeypress.
To tam upravím, že tam přidám onchange, a když tam někdo vloží PSČ bez mezery, tak jí tam ten script přidá..

Pokud se aktivuje ten skript, nově napsaná číslice se připojí vždy na konec, bez ohledu na pozici kurzoru v poli.
To je jedna z těch hlavních chyb, který se tady snažím doladit. Proto jsem taky založil tohle vlákno, protože to chci mít v takovým stavu, kde to nebude dělat tuhle paseku. Ale už možná vím jak na to. Mám tam zbytečně v tý funkci přepisování celé hodnoty inputu, proto se kurzor dostane vždycky na konec..

Napíšu 123, potud OK, pak mezeru. Nic se nestane. Mám rozbitý mezerník?
To je pravda. Tady by se hodilo umožnit po třetí číslici tu mezeru klidně mezerníkem zadat. Jinde ne. To dopracuju.

Běžný uživatel o JS neví, jen vidí, že to políčko nefunguje tak jak by očekával, některé funkce tam nejdou, mizí, objevují se a přesouvají se mezery.
Já nechápu co pořád máte s tím, že bude uživatel zmatenej a nebude vědět co se děje. Ten script, který se tady snažím doladit má prostě jednoduše přidat mezeru do PSČ tam kde má správně být, i přesto že jí uživatel zapomene nebo se nerozhodne napsat.
Uživatel uvidí label inputu: "PSČ", klikne na input, vpravo na něj vyskočí nápověda jak má input správně vyplnit. Takže tam bude v tomto případě, aby zadal PSČ trvalého bydliště ve formátu 123 45. On začne psát 123, nenapíše mezeru ale rovnou napíše čtvrtou číslici a automaticky mu tam skočí mezera. Mezera, která se u PSČ běžně všude píše, každý jí zná, naprostá většina lidí jí taky sama píše, totálně známá věc. Vysvětlete mi prosím někdo, koho zmate to, že se mu tam objevila mezera, která tam má být a kterou ten formulář vyžaduje.. To jako myslíte, že uživatel bude tak zmatenej, že nebude vědět jak dál vyplnit zbytek PSČ nebo zbytek formuláře. Nebo, že přestane vyplňovat zbylou část formuláře a začne řešit záhadu zjevení mezery v PSČ?! Většina formulářů na moderních webech je víceméně interaktivních a přizpůsobují se uživateli, tak aby bylo vyplňování co nejsnazší. A lidi jsou na takový věci zvyklí, takže tahle věc je ani trochu nerozhodí..
Str4wberry
Profil
Reakce na _es:
Myslel som spôsob zadávania dátumu klávesnicou, nie výsledný textový reťazec odosielaný serveru.
Já vím. Jde mi o to, že díky zadávání data prostřednictvím jednotného kalendáře nemusím číst žádný popisek s požadovaným formátem, vyberu si pohodlně z kalendáře, a mám prakticky jistotu, že bude zadané datum správně pochopeno ve zpracovávajícím skriptu.

Reakce na Jokera:
Napíšu 123, potud OK, pak mezeru. Nic se nestane. Mám rozbitý mezerník? Ještě párkrát zkusím napsat mezeru, pořád nic. Tak to vzdám a napíšu 45. Objeví se mezera a 45.
Možná by bylo férovější srovnávat nezasahování do formuláře během psaní vs. dobře napsané zasahování. Klidně to může fungovat tak, že v popisovaném případě vůbec nepoznáš, že JS něco dělá — mezeru doplní až po případném stisknutí čtvrté číslice bez mezery za sebou.
quatzael
Profil
Chamurappi:
A tohle máš také změřené?
Tori:
Tak soudíte na základě statistiky, zkušenosti, nebo zbožného přání?

Žádný statistiky, to je prostě normální sledovaný jev.


Str4wberry:
mezeru doplní až po případném stisknutí čtvrté číslice bez mezery za sebou.
Takhle to právě chci udělat! Mě připadá, že to tady nikdo nechápe (kromě Tebe). Proč bych jinak zakládal vlákno, když bych tam chtěl nechat ten špatně fungující script, který už mám napsaný?
anoymníí
Profil *
quatzael:
Trochu nechápu, proč to řešíš.

Uživatel přece nepotřebuje "hezký" vstup v políčku pro PSČ, potřebuje tam zadat validní hodnotu, což je pro něj 12345 i 123 45. Když odešle formulář, mezeru zahodíš.

Jediná interaktivita, kterou v tomto případě uživatel potřebuje, je zezelenání nebo zčervenání toho políčka, zpětná vazba, že ho vyplnil dobře nebo špatně. Jestli tam je nebo není mezera, mu je přece buřt.


quatzael:
to je prostě normální sledovaný jev.
Na jakém vzorku jsi tento jev sledoval?
Chamurappi
Profil
Reaguji na quatzaela:
Žádný statistiky, to je prostě normální sledovaný jev.
To je protimluv. Buď to sleduješ a máš statistiky, nebo to nesleduješ.

A tím myslím tedy jak to jinak udělat, abych použil event, nebo co to je
Odpověď máš víceméně vedle.


Reaguji na Str4wberryho:
Klidně to může fungovat tak, že v popisovaném případě vůbec nepoznáš, že JS něco dělá
Pokud tam tu mezeru uvidím a nemůžu ji samostatně smazat, je zjevné, že se děje něco nenormálního. Část lidí — i když malou — to může zmást, troufám si odhadnout, že větší část, než které to pomůže.
quatzael
Profil
anoymníí:
Uživatel přece nepotřebuje "hezký" vstup v políčku pro PSČ
Je to "user friendly" pro zpětnou kontrolu, kdy mrkne na input a má na něm přesně to co má zarytý v paměti nebo napsaný před sebou na papíře.
Uživatele to zároveň ujistí, že aplikace opravdu vyžaduje PSČ s mezerou a nemusí se obávat, že když to zadá náhodou s tou mezerou, že po odeslání formuláře, ho to vrátí, aby přepsal všechny inputy PSČ s mezerou na ty bez mezery. Protože klient OPRAVDU NETUŠÍ jak se daný formulář zachová, při odeslání, když je na té stránce prvně. A ten formulář je poměrně dlouhý, takže každý signál, který ujistí klienta, že zadává data ve správném formátu a nedává mu na k dispozici více variant, z nichž může být správná třeba jen jedna, zpříjemní práci s formulářem.

Oblíbený datepicker taky nedovolí zadávat do inputu nic jiného než číslice a tečky. A uživatele to nemate, naopak jim ulehčí práci, tím, že jim to nedovolí překlepy jako např. čárka místo tečky apod. Není důvod, aby uživatel datloval do inputu znaky, který tam už z principu nemají vůbec být..
« 1 2 3 »

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:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: