Autor Zpráva
jetyadam
Profil *
Čau, mam dotaz, mam tenhle kód pro input <input class="input" type="text" value="Přezdívka" onfocus="if(this.value==this.defaultValue){this.value=''}; this.style.color='black'" onblur="if(this.value=='') {this.value=this.defaultValue}; this.style.color='grey'"> a funguje mi, že když nikdo do toho nepíše tak je to šedy a když do toho zas někdo píše tak to píše černě, ale jak to mam udělat, když chci že někdo přeskočí do dalšího políčka aby to co do toho napsal bylo pořád černý a když to pak zas smaže tak aby to bylo šedý. Díky.
candiess
Profil
Moderátor Davex: Přesunuto z duplicitního tématu.
jetyadam:
Nejspíš myslíš placeholder="Šedý text", nebo pak stylem onclick, onblur.
candiess
Profil
jetyadam:
Nebylo by lepší použít placeholder="", který je pro toto udělaný?
jetyadam
Profil *
candiess:
Jo přesně tohle díky moc :D.
margin
Profil *
Vhodnější než onclick je onfocus.
Chamurappi
Profil
Reaguji na candiesse:
Zapomněl jsi zmínit, že placeholder nefunguje ve všech prohlížečích.


Reaguji na jetydam:
Posuň složené závorky za nastavování barvy a bude to fungovat tak, jak chceš. A všude.
Trax
Profil
Šlo by to, co napsal jetyadam použít i na <select>? Například na border?
Já už to zkoušel a s tím ohraničením mi to funguje jen na <input>. Nicméně v JS nejsem vůbec zběhlý, tak bych potřeboval spíše radu, jak na to. Pokud to vůbec jde. :D Díky. :)
Chamurappi
Profil
Reaguji na Traxe:
v JS nejsem vůbec zběhlý
Tohle je spíš záležitost CSS, prohlížeč si nemusí nechat mluvit do toho, jak formulářové prvky vypadají.
Jinak z pohledu JS pravděpodobně jde použít stejnou konstrukci. Jde-li ti o změnu stylu. Kdybys chtěl měnit value podle focusu, mohl bys možná narazit — jestli si dobře vzpomínám, v některých prohlížečích se uživatelem rozbalený <select> sám zavře, když mu sáhneš na value nebo na <option>y.
Trax
Profil
Chamurappi:
No nevím, jestli jsem tě správně pochopil. :) Já nechci value nijak měnit, jen zkontrolovat, zda je prázdná nebo není. Pokud bude, tak bych tam chtěl zvýraznit border a pokud nebude tak nechat border tak jak je nastavený v externím css.

A nebo např. když budu odesílat formulář a uživatelem zadané informace vyhodnotím třeba s PHP jako "špatné", tak aby se mi zvýraznili okraje červeně.
Chamurappi
Profil
Reaguji na Traxe:
Já nechci value nijak měnit
Kolega jetyadam mění barvu i value, psal jsi, že chceš to, co napsal, použít i na <select>, tak jsem postihl obě možnosti.

tak bych tam chtěl zvýraznit border a pokud nebude tak nechat border tak jak je nastavený v externím css
To by fungovat mělo. Pokud ti prohlížeč dovolí změnit barvu borderu přes externí CSS, půjde změnit i JavaScriptem. Spolehlivější asi bude měnit border spíš rodiči <select>u (v řeči JS this.parentNode místo this). A když bych to dělal já, nenastavoval bych konkrétní styl, ale měnil bych třídu (tedy this.parentNode.className = "něco") a konkrétní vzhled pro třídu nechť určí externí CSS.
Trax
Profil
Chamurappi:
Super! Funguje to. :)) Díky moc i za rady. ;)

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: