2011-10-31 12 views
33

Dinamik/JSON içerikli sekmelere sahip bir jquery ui iletişim kuralı var. Karmaşıklık nedeniyle, gerçekten bir keman veya ilgili bir kod (çok fazla kod) gönderemiyorum.Odağı programlı olarak çıkarın

Sorun, iletişim kutusu açıldığında, ilk sekmeye kadar iletişim kutusundaki öğeler arasında sekme yapabilmenizdir. Bundan sonra, başka bir yere yönlendiremezsiniz. Odak, o sekmede kilitlenir, başka bir yere tıklasanız bile, o odak bu sekmede kilitlenir.

Bu sorunun gerçek nedenini bulamıyorum.

Odaklamayı program aracılığıyla nasıl kaldırabilirim?

+0

Hangi tarayıcıyı kullanıyorsunuz? IE'de bazen iyi bir sebepten dolayı odak kaybedersiniz. – Hossein

+0

Odak geçişini manüel olarak yönetmek için TAB'ın tuşa basma olayının üzerine yazılmıştır (kalıcı iletişim kutularını gösterirken olduğu gibi). –

+0

Bir tuşa basma olayını gördüğüm tek yer, aşağı okunu sekmenin içeriğine götürebilmek için bir tuş işlevidir. Ve tüm tarayıcılarda. – Jason

cevap

55

Bu iyi gelebilir ...

http://api.jquery.com/blur/

Eğer odak kaybetmek istemiyorum sahada blur olayı tetikleyen

$('#tabName').blur(); 
+1

Bu doğru cevap, ancak durumumu açık bir şekilde açıklamamış/açıklamamıştım. Buna göre güncellenir. Teşekkürler. – Jason

+3

Bu, harika çalışıyor ve sahip olduğum benzer bir sorunu çözdü. JQuery kullanıyorsanız ve bunu genel olarak bir etkinlik kapsamına uygulamanız gerekiyorsa hızlı bir değişiklik öneririm: $ (document.activeElement) .blur() '- etkin olan her şey odağı kaybeder olay anında. – Markus

+2

Saf JavaScript ile nasıl yapılır? – AmerllicA

0

JS'nin nerede başarısız olduğunu bulmak için bir sürü uyarı yüklerim. Örneğin.

alert(1); 
var a = 10; 
alert(2); 
var b = null; 
alert(3); 
a += 5; 
alert(4); 
b.hello(); 
alert(5); 

Açıkçası bu örnekteki son uyarı Güzel bir yaklaşım değildir ama herkes bir noktada bunu yapmak zorunda 4.

olacaktır.

+9

Uyarı özellikle, mousemove, hover veya benzeri olaylara tepki veriyorsa, hata ayıklamanın uygun bir yolu değildir. Hemen hemen her tarayıcıda '' console.log (...) 'ı kullanarak yazabileceğiniz bir hata ayıklama konsolu vardır; ' – ThiefMaster

+6

Hata ayıklamanın en doğru yolu, bir hatayı en verimli şekilde izlemenize yardımcı olur. Uyarıların, hata ayıklamada çok yararlı bir rolü vardır çünkü yürütmeyi duraklatırlar. Sadece dün bir glitchy jQuery animasyonu hata ayıklanıyordum ve '' console.log() 'bu görsel aksaklığın nereden geldiğini saptamak için işe yaramazdı, çünkü çok hızlı oldu. Uyarılar ekleyerek animasyonu her adımda duraklattı ve aksaklığın nereden kaynaklandığını tam olarak bulmamı sağladı. OPs yönteminin uygun bir yol olmadığını ve 'console.log()' bu örnekte daha iyi olduğunu, ancak 'alert() 'hata ayıklamada bir yeri vardır. – Gavin

+1

@Gavin ve dinlenme. Daha sonra 'debugger' komutunu kullanmak daha iyidir (en azından onu destekleyen tarayıcılarda). Yürütmeyi durdurur, ancak hala neler olduğunu incelemek için geliştirici araçlarınızı kullanmanıza izin verir. Uyarı ile, tüm aldığınız mevcut durumun görsel bir anlık görüntüsüdür, bu her zaman yardımcı olmaz. – stafffan

2

deneyin.