Autor Zpráva
kubakoumak
Profil
Ahoj,

toto je spíše taková lahůdka a čekám, že to pude udělat v js, ale nějak si s tím nevím rady :-|.
Potřebuji, abych mohl pomocí css nastavit, jakou barvu a okraj bude mít pole formuláře, v kterém uživatel právě píše. Jakmile by pole opustil, vrátilo se to na původní stylování.

mockrát děkuji za pomoc a doufám, že toto vlákno pomůže třeba i někomu jinýmu.
Michal Benda
Profil
Udělal bych to pomocí kombinace CSS a JS - je možné, že CSS3 už na to bude nějak lépe vybavená a nebude tudíž potřeba použít JavaScript, ale nevím.

<style>
input {
 border-color:gray;
}

input.aktivni {
 border-color:orange;
}
</style>

...

<input type="text" name="name" value="Jméno" />
<input type="text" name="lastname" value="Příjmení" />
...

<script>
var inputs = document.getElementsByTagName("input");
var i;

if(inputs.length > 0){
 for(i=0;i<inputs.length;i++){
  inputs[i].attachEvent("onfocus", "this.className='aktivni';");
  inputs[i].attachEvent("onblur", "this.className='';");
 }
}
</script>
kubakoumak
Profil
Tento kód mi z nějakého prostého důvodu nefunguje :-(. Ale dík za práci
kubakoumak
Profil
Už to fachá takhle:
(Jdu na to úplně jinak... a hůř)
<script language="JavaScript1.2">

var highlightcolor="orange"

var ns6=document.getElementById&&!document.all
var previous=''
var eventobj

var intended=/INPUT|TEXTAREA|SELECT|OPTION/

function checkel(which){
if (which.style&&intended.test(which.tagName)){
if (ns6&&eventobj.nodeType==3)
eventobj=eventobj.parentNode.parentNode
return true
}
else
return false
}

function highlight(e){
eventobj=ns6? e.target : event.srcElement
if (previous!=''){
if (checkel(previous))
previous.style.backgroundColor=''
previous=eventobj
if (checkel(eventobj))
eventobj.style.backgroundColor=highlightcolor
}
else{
if (checkel(eventobj))
eventobj.style.backgroundColor=highlightcolor
previous=eventobj
}
}

</script>


Akorát je to trochu zpožděné ale to neva :-) Líbí se vám to?

HTML potom:

<FORM onKeyUp="highlight(event)" onClick="highlight(event)">
.....
</FORM>

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0