Autor Zpráva
vlczak
Profil *
Nevíte někdo, jak nastavit, aby mi po načtení stránky blikal kurzor ve formu do kterýho se má vložit text? Jde mi o to, aby se tam na to nejdřív nemuselo klikat myší, nebo přejíždět tabulátorem..
habendorf
Profil
Klíčová slova jsou JS, focus, onload.
vlczak
Profil *
ani jedno z toho není ono..
centi
Profil
vlczak
Ale ano. A vsetky tri.
habendorf
Profil
<body onload="document.getElementById('nevolte-socany').focus()">
<form>
<input id="nevolte-socany" type="text" value="">
</form>
</body>
peta
Profil *
habendorf
neslo by to treba pres
<input type="text" value="" onload="this.focus()">
?
Dero
Profil
peta: IMHO se na input událost onload neaplikuje.

AFAIK onload funguje pouze u body + img (a samozřejmě objekty, tedy embed, object, iframe...).
habendorf
Profil
Nešlo. Událost onload na inputu nenastává.
habendorf
Profil
Tak zase pozdě :o)
Je to přesně jak říká Dero. Funguje ještě (asi) na frame.
A nebo jiná možnost je přes window.onload.
Dero
Profil
habendorf: Omlouvám se, že Ti lezu do zelí. :o)

Jen doplním, že alespoň v HTML 4.0 funguje už jen pouze pro FRAMESET, pro FRAME by neměla.
Chamurappi
Profil
Reaguji na Dera:
v HTML 4.0 funguje jen
Předchozí verze HTML neobsahovaly handlery událostí vůbec.

Událost onload funguje v trojici nejrozšířenějších prohlížečů mimo <body> a <frameset>u i na elementech <img> a <input type="image">. V Mozille a Opeře navíc i na <object>u.

Reaguji na habendorfa:
Tak zrovna na elementu <frame> nefunguje v ničem. Zajimavé.

Efektivnější, než nastavovat focus až při onload události, je nastavit ho uvnitř elementu <script> položeného níže v kódu. V HTML lze spolehlivě přistupovat k DOMu za běhu, není nutné čekat s vyhodnocením na dotažení celé stránky (jako tomu je v XHTML). Událost onload má navíc i tu nevýhodu, že čeká i na stažení všech obrázků.
Leo
Profil
A vubec nejlepsi je necpat ovladace udalosti do HTML jako atributy, ale navesit je primo v tom (externim) JS. Mate pak o starost min, co se tyka validatoru.

Jinak co se tyka nastavovani focusu, specialne az na onload - rada stranek me timhle stve, protoze mam uz natazeny kus stranky, zacnu vyplnovat formular a najednou mi preskoci kurzor. Zabit.

Leo
habendorf
Profil
Chamurappi, Leo: Máte oba pravdu (Chamurapi - co se týče toho framu, napsal jsem "asi", sám jsem si nebyl jist), přesto pár poznámek:

1) Taky nemám rád nastavování focusu, ale když to vlczak chce, tak mu to napíšu a může být spokojen. Když někdo chce jezdící text, je mu celkem k prdu deset reakcí typu "kašli na to", radost bude mít teprve až mu někdo napíše marquee.

2) Vzhledem k dotazu nepředpokládám u tazatele zrovna excelentní znalost JS. Takže začít vysvětlovat, jak přilinkovat externí JS atd. atd. mi připadá trochu složité oproti tomuto nejjednoduššímu (byť ne ideálnímu) řešení.

Tož asi tak.
Leo
Profil
A to ja nedam na to, co si lidi mysli, ze chcou, ale snazim se z nich vydolovat co chcou doopravdy a proc. Protoze zacatecnik nema vetsinou poneti o alternativach a souvislostech. Jiny kraj, jiny pristup. Leo
vlczak
Profil *
Přesně tak habendorfe. Jsem začátečník a JS je na mě moc složitý, prot jsem si nechal na nějakých stránkách vygenerovat heslo (viz níže) Celá stránka vypadá asi takhle:


<body onload="document.getElementById('password').focus()">

<script>

var pass=new Array()
var t3=""
var lim=5
pass[0]=""
pass[1]=""
pass[2]=""
pass[3]=""
pass[4]=""
pass[5]=""

//configure extension to reflect the extension type of the target web page (ie: .htm or .html)
var extension=".html"
var enablelocking=0
var numletter="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW XYZ"
var temp3=''
var cur=0


function max(which){
return (pass[Math.ceil(which)+(3&15)].substring(0,1))
}

function testit(input){
temp=numletter.indexOf(input)
var temp2=temp^parseInt(pass[phase1-1+(1|3)].substring(0,2))
temp2=numletter.substring(temp2,temp2+1)
return (temp2)
}


function submitentry(){
t3=''
verification=document.password1.password2.value
phase1=Math.ceil(Math.random())-6+(2<<2)
var indicate=true
for (i=(1&2);i<window.max(Math.LOG10E);i++)
t3+=testit(verification.charAt(i))
for (i=(1&2);i<lim;i++){
if (t3.charAt(i)!=pass[phase1+Math.round(Math.sin(Math.PI/2)-1)].charAt(i ))
indicate=false
}
if (verification.length!=window.max(Math.LOG10E))
indicate=false
if (indicate)
window.location=verification+extension
else
alert("Invalid password. Please try again")
}
</script>



<table align="center" border="1" cellspacing="0" cellpadding="0" bgcolor="#FFFFBD">
<tr>
<td width="100%"><form name="password1"><div align="center"><center><p><strong>Heslo: </strong>
<input id="password" type="password" value="" name="password2" size="15"><br>
<input type="button" value="Odeslat" onClick="submitentry()"></p>
</center></div>
</form>
</td>
</tr>
</table>



</body>


Chyba by neměla být v JS, ale ve Formu. Do toho generovanýho kódu jsem ještě dopisoval type="password" a focus().. Jde mi o to, aby když načtu stránku mi blikal kurzor v poli pro vyplnění hesla a aby se heslo dalo odeslat enterem a nikoliv, jako ted jen tlacitkem. Tuším, že nějaký chyby, ale cokoliv pozměním, tak je to pořád stejný, ne-li horší, tak to mám zatím splácaný takhle.. dík za radu..
Chamurappi
Profil
Reaguji na vlczaka:
Ten focus() je lepší zavolat hned, jak bude element password k dispozici. Pak tam nemusíš mít ani počáteční značku <body>. Hned za element <input type="password"> přidej <script>document.getElementById("password").focus()</script>
Máš-li na stránce i nějaké obrázky, mělo by to fungovat rychleji než při čekání na událost onload.

Odeslání klávesou enter je přirozená vlastnost každého formuláře s odesílacím tlačítkem. Takové tlačítko tam však ty nemáš. Nahraď type="button" za type="submit".
Fred
Profil
OT: vůbec nechápu k čemu tam jako zakódováváš ten název stránky, není to trochu k ničemu? Místo celýho toho scriptu by stačilo

<input type="button" value="Odeslat" onclick="document.location.href=document.getElementById('password').va lue+'.html'">
Pavla
Profil *
A lze nastavit focus na řádek tabulky? Mám dlouhý tabulkový výpis v divu s overflow:auto a když kliknu někde na spodní řádek který mě přesměruje na další stránku a pak dám zpět(mnou definované, ne v browseru), tak chci ať je aktivní ten řádek na který jsem klikla. Obarvit to umím, ale pozice se mi nějak nedaří. Děkuji P.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0