HTML öğesini tabindex'ten nasıl yok sayabilirim?


362

HTML'de tarayıcıya belirli öğeler üzerinde sekme dizine eklemeye izin vermemesini söylemenin bir yolu var mı?

Sayfamda jQuery ile oluşturulan bir kenar gösterisi olsa da, sekme işleminde sekme denetimi sayfadaki bir sonraki görünür bağlantıya geçmeden önce sekme denetimi sayfadaki bir sonraki görünür bağlantıya geçmeden önce çok sayıda sekme basımı alırsınız kullanıcı görsel olarak.

Yanıtlar:


593

Kullanabilirsiniz tabindex="-1".

W3C HTML5 özellikleri olumsuz destekler tabindexdeğerleri:

Değer negatif bir tamsayı ise
Kullanıcı aracısı öğenin tabindex odak bayrağını ayarlamalı, ancak sıralı odak gezinme özelliğini kullanarak öğeye erişilmesine izin vermemelidir.


Bunun bir HTML5 özelliği olduğunu ve eski tarayıcılarda çalışmayabileceğini unutmayın.
Olmak (1999) W3C HTML 4.01 standart şikayette, tabindex pozitif olması gerekir.


Saf HTML'de aşağıdaki örnek kullanım.

<input />
<input tabindex="-1" placeholder="NoTabIndex" />
<input />


12
Görünüşe göre Google Chrome -1'i desteklemiyor, çünkü teknik olarak tabIndex bağlantıya göre sadece 0 -32767'yi destekliyor W3. Bunu yaptığımda; 500 kullandım. Hackish; ama çalıştı.
Pire

38
@Flea Sürüm 23 itibariyle Google Chrome, tabindex'te -1'i destekliyor. Bunun ne kadar süre önce, belki de 23'ten önce olduğundan emin değilim. Chrome 23, Firefox 18, IE8, IE9 ve Opera 12.11'de "-1" i test ettim ve tüm kartta çalıştı.
jkupczak

5
Cevabı, güncellenmiş HTML5 spesifikasyonuna bağlantı oluşturmak için düzenledim. tabindexartık negatif değerlere sahip olmaya izin veriyor.
James Donnelly

1
@JamesDonnelly Düzenlemeniz için teşekkür ederiz. Tarayıcı uyumluluğu için W3C HTML4 spesifikasyonuna referansı tekrar ekledim.
Martin Hennings

2
IE
5.01'den

122

tabindexÖzelliklerde ve HTML'de tüm küçük harf olmasına rağmen , Javascript / DOM'da bu özelliğin çağrıldığını unutmayın tabIndex.

Neden programlı olarak değiştirilmiş sekme indekslerinizin neden çalışmadığını anlamaya çalışırken zihninizi kaybetmeyin element.tabindex = -1. Kullanın element.tabIndex = -1.


34
Bu bir cevap değil, bir yorum olmalı gibi görünüyor.
DrCord

47
Eh, okumaktan memnun oldum ve muhtemelen yorum olarak gömülmüş olsaydı kaçırırdım.
MalcolmOcean

10

Bunlar doğal olarak sekme sırasında düğmeler ve çapalar gibi öğelerse, bunları sekme düzeninden tabindex = -1 ile kaldırmak bir tür erişilebilirlik kokusudur. Yinelenen işlevsellik sağlıyorsa, bunları sekme sırasından kaldırmak tamamdır ve yardımcı öğelerin yok sayacağı şekilde bu öğelere aria-hidden = true eklemeyi düşünün.


8

Desteklemeyen bir tarayıcıda çalışıyorsanız, gerçekten yüksek bir sekme dizinitabindex="-1" atlanması gereken şeyleri vermekle kurtulabilirsiniz . Örneğin, temel olarak nesnenin sekme sırasını sayfanın sonuna taşır.tabindex="500"

Bunu, ortasında atılan bir düğme ile uzun bir veri giriş formu için yaptım. İnsanların çok sık tıkladıkları bir düğme değil, bu yüzden yanlışlıkla sekmeye ve enter tuşuna basmalarını istemedim. disabledişe yaramaz çünkü bu bir düğme.


5

"TabIndex = -1" gibi bir hack, Chrome v53 ile benim için çalışmıyor.

Chrome ve çoğu tarayıcı için çalışan budur:

function removeTabIndex(element) {
    element.removeAttribute('tabindex');
}
<input tabIndex="1" />
<input tabIndex="2" id="notabindex" />
<input tabIndex="3" />
<button tabIndex="4" onclick="removeTabIndex(document.getElementById('notabindex'))">Remove tabindex</button>


Bu, sekmeyi devre dışı bırakmak yerine öğeye varsayılan bir sekme dizini atamaz mı?
Lawyerson

@Lawyerson no, aslında 'removeAttribute' i açıkladığı için sekmeyi devre dışı bırakır. denedin ama farklı sonuçla?
Val

2
Etkisi olmadan denedim. Tarayıcılar, varsayılan olarak, herhangi bir tabindex ayarlanmamış olsa bile girdiler sayfada göründükleri sırayla sekmenize izin verir, bu yüzden sadece özelliği kaldırmanın sekmeyi tamamen devre dışı bırakmaması bana mantıklı geliyor. Ayrıca, bu kullanmak istediğiniz girdinin başında "tabindex" özelliği yoktur.
Lawyerson

Parçacığı çalıştırma notabindexKutuya tabIndex=5, düğmeye bastıktan sonra olduğu gibi sekebilirim. Bir belediye başkanı sorunu değil, ama yine de tamamen "silinemez" yapmıyor.
Mikael Dúi Bolinder

Muhtemelen çalışmıyor çünkü deve kasası kullanıyorsunuz. Hepsi küçük harf olmalıtabindex
dman

3

Bunu yapmanın yolu eklemektir tabindex="-1". Bunu belirli bir öğeye ekleyerek , klavye gezinmesi tarafından erişilemez hale gelir . Tabindex'i daha iyi anlamanıza yardımcı olacak harika bir makale var .


2

Özniteliği disabledöğeye eklemeniz yeterlidir (veya bunu sizin için yapmak için jQuery kullanın) Devre Dışı, girdinin odaklanmasını veya seçilmesini engeller.


Hangi Chrome sürümü?
Yaakov Ainspan

Chrome 49.0.2623.75 (64 bit).
Felix Eve

Sürümüm 51.0.2704.103. Bu kemanı kontrol et . Yanlış kodu biliyor olabilirsiniz, asla bilemezsiniz.
Yaakov Ainspan

@AtulChaudhary, nasıl çalışmıyor? Hala odaklayabilir misin?
Yaakov Ainspan

alanları devre dışı kez onlar devre dışı kalır ve onu IOS9 bir konudur ama IOS10 içinde çalışıyor görünüyor
Atul Chaudhary
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.