Zdravim!
Ve formulari mam policko INPUT type="text".
Chtel bych, aby po nacteni stranky v nem bylo napriklad sedou barvou napsano "Sem vepiste jméno". Po kliknuti na policko by text "Sem vepiste jmeno" zmizel a uzivatel by napsal svoje jmeno, ovsem cernou barvou.
Moc dik za help
neni to trochu zbytečný, stačí to přece oboje černou ale jinak ti neporadim
Jasně Hopíku! Je to jednoduchý jak facka:
<form name="formular" id="formular">
<input type="text" size="30" name="code" value="Sem vepište jméno" style="color:#666666" onclick="document.formular.code.value='';style.color='#000000'"></form>
style="color je barva textu
value je nápis
value v oncliku je nápis po kliknutí
a color v oncliku je barva textu po kliknutí
document.formular.code
formular je jméno formu
a code je jméno textovýho pole
VzA, skoro dobře, akorát to nefunguje v mozille. Zkoušel jsem to upravit na:
<form action="">
<input type="text" size="30" id="code" value="Sem vepište jméno" style="color:#666666" onclick="document.getElementById('code').value='';style.color='#000000'" />
</form>
tak to sice funguje v IE i mozille, ale v mozille tohlásí nějakou ošklivou chybu. (není sice normálně vidět, ale v jsconsole je.) Tak nevím.
Navíc se tam musí dostat myší, tak možná to dát ne jako onclick, ale onfocus. Nevím, chce to zkusit.
VzA: Ano, presne k tomuto jsem se dostal take. Ovsem ten script ma jeden podstatny bug:
Po nacteni stranky a kliknutim mysi do inputu se vse provede OK.
Ted tam neco napis. Do teto chvile to je stale ok.
Ovsem kdyz napises ten text chybne a chces ho opravit, tak po kliknuti mysi na input ti cely zmizi a musis to psat cele znovu.
Chtelo by to jeste nejak vylepsit.
Pri inline js by som to spravil takto:
<input type="text" value="Sem vepište jméno" style="color:#666" onfocus="if(!this.flag){this.value='';this.style.color='#000';this.flag=true}" />
Rieši to síce pár spomenutých chýb (focus namiesto click, vymazanie textu po druhom focuse, ide to aj v Mozille), ale nepáči sa mi na tom, že je to inline a musí sa to písať do každého inputu.
Skôr by som spravil externý js:
function addEvent (el, evname, func)
{
if (el.attachEvent) el.attachEvent ("on" + evname, func);
else if (el.addEventListener) el.addEventListener (evname, func, true);
else el ["on" + evname] = func;
};
function setupInputText (input)
{
input.style.color = "#666";
addEvent (input, "focus", function ()
{
if (input.initialized) return;
input.value = "";
input.style.color = "#000";
input.initialized = true;
});
}
a body onload="setup()", pričom setup() by bol priamo na stránke a vyzeral by napr. takto:
function setup ()
{
var inputs = document.getElementsByTagName ("input");
for (var i = 0; (input = inputs [i]); ++i)
if (input.type = "text") setupInputText (input);
}
Je to síce trochu dlhšie, ale pri použití na viacerých stránkach jednoduchšie a napr. pri vypnutom js nezostane text šedý.
A možno by stačilo iba toto:
<input onfocus="this.select()" type="text" value="Sem daj priezvisko" name="priezvisko" />
Hoppik: aha. No jo. Je tam přece ten onclick, kterej nařizuje po kliknutí prázdný pole.
tak to doplň porovnáním obsahu, ne?
pokud je v textoxu napsáno "vložte text", tak se vymaže, jinak ne... jedna stupidní podmínka...
nebo porovnání barvy textu. Když to bude šedé, tak to smaž, když černé, tak ne.