Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] OnFocus()
Forum PHP.pl > Forum > Przedszkole
Skie
Witam,

tym razem banalny problem - jak sprawdzić czy jest aktywny focus na danym elemencie?

Mam pole textarea (jego focus bedzie sprawdzany) i funkcje keypress (skroty klawiszowe) i chce zrobić coś takiego żeby funkcja keypress się nie wykonywała gdy ktoś coś pisze w textarea (czyli jak jest focus).
Dokładnie rzecz biorąc funkcja keypress może się wykonać, byleby nic nie zrobiła (czyli zwykły if w środku funkcji).
flashdev
Kod
<script>
elementFocus=false;

function isFocus(){
    return elementFocus;
}
</script>

<textarea onFocus="elementFocus=true" onBlur="elementFocus=false"></textarea>
Skie
Dokładniej rzecz biorąc to chodziło mi czy da to się sprawdzić bez wprowadzania dodatkowej zmiennej, no ale cóż - nie dopisałem tego w temacie, więc zasłużyłeś na "pomógł" - mam nadzieję, że ktoś wie jak bez zmiennej to zrobić smile.gif
bim2
  1. <script type='text/javascript'>
  2.  
  3. var Focused
  4.  
  5. var AllElts=new Array()
  6.  
  7. function TrackFocus(){
  8.  
  9. AllElts=document.getElementsByTagName('*')
  10.  
  11. for (i=0;i<AllElts.length;i++){AllElts[i].Foo='tag ' +i+' has got focus'
  12.  
  13. AllElts[i].setAttribute('onfocus',function(){Focused=this.Foo;alert(Focused)})
  14.  
  15. AllElts[i].onfocus=function(){Focused=this.Foo;alert(Focused);}
  16.  
  17. }
  18.  
  19. }
  20.  

Sprawdza który element ma ustawiony focus smile.gif Nie wiem czy działa, znalazłem to na necie.

EDIT:
  1. <script type="text/javascript">
  2. var elName;
  3. window.onload=function()
  4. {
  5. var el = document.forms[0].elements;
  6. for(var i=0;i<el.length;i++)
  7. el[i].onfocus=function()
  8. {
  9. elName=this.getAttribute('name');
  10. }
  11. }
  12. </script>
  13. </head>
  14. <a href="#" onclick="alert(elName?'The element having the name of ''+elName+'' was focused.':'No element was focused.'); return false">"Which element has the focus?"</a><br>
  15. <input name="mytxt1" type="text"><br>
  16. <input name="mytxt2" type="text"><br>
  17. <input name="mytxt3" type="text"><br>
  18. <input name="mytxt4" type="text"><br>
  19. <input name="mytxt5" type="text"><br>
  20. </form>

elName zawiera nazwę focusowanego elementu, więc if(elName=='nazwa') { alert('yes'); }
flashdev
Cytat(Skie @ 2.01.2009, 18:14:34 ) *
Dokładniej rzecz biorąc to chodziło mi czy da to się sprawdzić bez wprowadzania dodatkowej zmiennej, no ale cóż - nie dopisałem tego w temacie, więc zasłużyłeś na "pomógł" - mam nadzieję, że ktoś wie jak bez zmiennej to zrobić smile.gif


Kod
<textarea cols='40' rows='30' onFocus='for(i in this){;this.value+=i+"\n";}'</textarea>


Z tego co tak na szybko sobie tutaj patrze to niestety nie ma takiej właściwosci, ale będzie dla mnie miłym zaskoczeniem, jeśli okaże się, że się mylę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.