SORU
23 EYLÜL 2008, Salı


Onblur olduğunda, nasıl **liseyi bulabilir miyim?

Bu gibi kutusu: html giriş için onblur bir işlev eklemek sanırım

<input id="myInput" onblur="function() { ... }"></input>

Bir şekilde ateş (tıklanma elementi) onblur olay işlevi içinde neden olan unsur KİMLİĞİNİ almak için var mı? Nasıl?

Örneğin, bu gibi bir süresi var sanırım:

<span id="mySpan">Hello World</span>

Eğer ben doğru giriş elemanı sonra yayılma alanını tıklatın odak, giriş elemanı odağını kaybeder. Nasıl işlevi tıklandığında olduğunu mySpan olduğunu biliyor mu?

Eğer yayılma özelliği olay benim sorunum bazı durum değeri belirli bir öğe gösteren atabilirim çünkü çözülmüş olurdu giriş elemanı onblur olay tıkladım olmuştu önce meydana olsaydı. PS:

PPS: bu sorunun bir arka plan Ajax tetiklemek istiyorum.AutoCompleter önerilerini, bu öneriler hemen giriş elemanı onblur olay yüzünden kaybolmadan göstermek için dışarıdan (tıklanabilir bir eleman) kontrol. Eğer belirli bir öğe tıklandığında eğer OnBlur işlevi bakmak istiyorum, ve eğer öyleyse, olay bulanıklığı görmezden gelin.

CEVAP
23 EYLÜL 2008, Salı


Hmm... Firefox, explicitOriginalTarget tıkladım eleman çekmek için kullanabilirsiniz. toElement IE için aynı şeyi beklerdim, ama çalışmak için görünmüyor... Ancak, belgeden yeni odaklı eleman çekebilirsiniz:

function showBlur(ev)
{
   var target = ev.explicitOriginalTarget||document.activeElement;
   document.getElementById("focused").value = 
      target ? target.id||target.tagName||target : '';
}

...

<button id="btn1" onblur="showBlur(event)">Button 1</button>
<button id="btn2" onblur="showBlur(event)">Button 2</button>
<button id="btn3" onblur="showBlur(event)">Button 3</button>
<input id="focused" type="text" disabled="disabled" />

Uyarı:Bu tekniği yapardeğilodak değişiklikleri yol açtığı içinsekmeüzerinden klavye ile alanlar ve hiç çalışmıyor Chrome veya Safari. activeElement kullanarak büyük sorunu (IE hariç) sürekli kadar güncel değildirsonrablur olay işlenmiştir ve geçerli bir değer işlem sırasında olabilir! Bu the technique Michiel ended up using bir varyasyon ile hafifletilebilir:

function showBlur(ev)
{
  // Use timeout to delay examination of activeElement until after blur/focus 
  // events have been processed.
  setTimeout(function()
  {
    var target = document.activeElement;
    document.getElementById("focused").value = 
      target ? target.id||target.tagName||target : '';
  }, 1);
}

Bu Krom düğmeleri odaklanmak ayarlamaz ihtar ile en modern tarayıcılar (Chrome, IE ve Firefox test) çalışması gerekirtıkladım(vs için sekmeli).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Codecourse

    Codecourse

    3 ŞUBAT 2009
  • DJPixcell

    DJPixcell

    20 NİSAN 2007
  • GWTLecturer

    GWTLecturer

    18 EKİM 2012