Autor Zpráva
sh00ter
Profil
Zdravím,

mám takovej problém,
mám tabulku a jednotlivý buňky se po klepnutí měněj na inputy. Já potřebuju, aby když budu psát do toho inputu, a zmáčknu ENTER, tak aby input ztratil focus. Dát focus jinému elementu(inputu) není problém, ale já potřebuju, aby ten element(input) byl co nejblíž tomu inputu, aby třeba stránka nescrollovala, ale aby nebyl vidět => dal jsem mu display:none, nebo jsem zkousel i visibility:hidden, ale stejně se focus nepřesunul.
Nevíte jak na to?

Díky.
tiso
Profil
sh00ter: skús stlačiť TAB miesto ENTER.
Chamurappi
Profil
Reaguji na sh00tera:
Něčemu, co není ve stránce vůbec vizuálně přítomno, nejde dát focus. Jak by se to mělo chovat, když uživatel začne psát? Můžeš zkusit napozicovat <input> za levý okraj, ale na tvém místě bych si od toho nic nesliboval.

Nechtěl bys spíš něco jako tohle?
<input onkeydown="if(event.keyCode == 13) { this.blur(); return false }">
Metoda blur zruší focus a return false zablokuje výchozí akci.
sh00ter
Profil
je to jen k tomu aby se dal pouzit enter k odeslani formulare AJAXem, blur() jsem zkousel a nefungoval, aspon pod chromem
tiso
Profil
sh00ter: na to stačí formuláru správne nastaviť onsubmit="...", nie?
_es
Profil
sh00ter
je to jen k tomu aby se dal pouzit enter k odeslani formulare AJAXem

A nedá sa formulár odoslať "normálne" - bez AJAXu, aby to fungovalo aj bez JavaScriptu?
sh00ter
Profil
ono to neni primo ve formulari, je to proste samostatnej input kterej se pri onbluru zacne zpracovavat, ja k tomu chci pridat jeste enter
_es
Profil
sh00ter
... kterej se pri onbluru zacne zpracovavat, ...

Tak sa potom ten Chamurappiho kód dá upraviť:
<input onkeydown="if(event.keyCode == 13) { this.onblur(); return false }">

Alebo namiesto this.onblur(); zavolať funkciu, ktorá to spracovanie vykonáva.
sh00ter
Profil
Mám takovej pocit, že vlastnost onblur neexistuje, páč když tam dám na zkoušku alert, tak když je před tím onblurem tak jede, po něm uz ne; když to samý udělám s tím blurem, tak se sice provede v obou případech ale input focus neztratí:(. Našel sem akorát, že blur() platí s objektem window...

pod IE blur() funguje
Joker
Profil
sh00ter:
Existuje onblur, což je událost vyvolaná při opuštění elementu. A pak existuje metoda blur, která by měla opuštění elementu vyvolat. Ale jak se zdá, nefunguje všude.

Pokud ale nefunguje metoda blur, není ještě nutné vyrábět umělý prvek, který by převzal fokus... přinejhorším jde fokus přenést na celé okno: window.focus()
sh00ter
Profil
bohuzel se obavam ze to nutny je, protoze window.focus() zase nefunguje v chomu :(
Chamurappi
Profil
Reaguji na sh00tera:
Pořád asi nerozumím, o co se snažíš.
Kód z příspěvku #2 mi funguje ve všech prohlížečích. Zmáčknu Enter, focus zmizí, formulář se neodešle. Co víc by to mělo dělat?

je to proste samostatnej input kterej se pri onbluru zacne zpracovavat
Mám takovej pocit, že vlastnost onblur neexistuje
Zachytáváš tedy událost onblur, nebo ne?

Našel sem akorát, že blur() platí s objektem window...
pod IE blur() funguje
Pokud si prokliknu „blur“ v příspěvku #2, dostanu se na MDC, kde se píše o elementu, nikoliv o window, což naznačuje, že Mozilla tuto metodu zná.


Reaguji na Jokera:
Ale jak se zdá, nefunguje všude.
V čem jsi to zkoušel?
sh00ter
Profil
rikam, pod IE mi funguje this.blur(), ve chromu mi to nefunguje a jinej prohlizec nemam....
Joker
Profil
Chamurappi:
V čem jsi to zkoušel?
Aha, tak je to jinak.
V Opeře zdá se nefunguje jen konstrukce onfocus="this.blur()"
Když jsem zkusil jinému elementu dát onmouseover="document.getElementById('prvek').blur()", tak už to šlo

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: