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

  • Edgar flores

    Edgar flores

    7 HAZİRAN 2006
  • TV and Lust

    TV and Lust

    26 HAZİRAN 2006
  • wwjoshdo

    wwjoshdo

    25 Mayıs 2009