2013-03-21 13 views
5

jest rozwiązanie dla różnych przeglądarek, aby wyłączyć "kartę" na typie wejściowym = "tekst"?jest sposób na wyłączenie "tab" na typie wejściowym = "tekst"?

<input type='text' /> 

Naciśnięcie „zakładkę” przenosi nas do kolejnego „aktywowana” składnika (na przykład przycisk)

chcę zamiast „Karta” zrobić coś innego. Na przykład nawet w karcie Wyszukiwarka Google jest po prostu wykorzystywane do autouzupełniania sugerowany tekst zamiast przenosić do następnego komponentu Regulowana ...

dzięki

+1

ustawić keydown detektor zdarzeń, yo – Rooster

+1

można u wyjaśnij wyraźnie pls – PSR

+0

Zmontowałem, aby wyjaśnić lepiej. @john, nawet jeśli otrzymam powiadomienie o kluczowym wydarzeniu, nadal nie wiem, jak zapobiec koncentracji. – Zo72

Odpowiedz

10
document.querySelector('input').addEventListener('keydown', function (e) { 
    if (e.which == 9) { 
     e.preventDefault(); 
    } 
}); 

zależy jak cross-browser jesteś mówi jednak, ponieważ powyższe obsługuje tylko IE9 (i inne nowoczesne przeglądarki).

http://jsfiddle.net/ExplosionPIlls/YVUzz/

IE8- użycie attachEvent zamiast addEventListener i e.keyCode zamiast e.which, i nie ma preventDefault, ale można użyć return false.

+0

'querySelector' również nie jest obsługiwane przez np. <7, i ff <3 http://caniuse.com/queryselector –

+0

querySelector nie ma znaczenia. Ważny jest kod odbiorcy wydarzenia. e.preventDefault – Zo72

+0

I e.preventDefault()/e., który nie występuje we wszystkich przeglądarkach. – epascarello

1

Tak, sprawdzić, czy był naciśnięty klawisz kartę, a jeśli tak, to zwraca fałsz:

<form class='noTab'> 
    <input type="text" /> 
    <input type="text" /> 
    <select> 
     <option>a</option> 
     <option>b</option> 
    </select> 
    <textarea> 
    </textarea> 
</form> 

jQuery('.noTab').find('input,select,textarea').keydown(function (e) { 
    if (e.which === 9) { 
     return false; 
    } 
}); 

jQuery pozwoli tej pracy na starszych przeglądarkach.

http://jsfiddle.net/JxMhY/

Na tej skrzypce pokazuje 2 formy, jedną z klasą „noTab” i jeden bez, jak TAB/SHIFT + TAB są użyteczne w wielu formach, ale nie taki, który posiada kartę specjalną” " akcja.

+0

'$ ('# form_name input')' byłoby bardziej efektywne i czystsze :) –

+0

Nie sprecyzował, że używa jQuery, ale jeśli tak jest, jest to optymalne rozwiązanie –

2

implementacja non jQuery byłoby trochę jak ten -

HTML byłoby

<input type="text" id="myField1" onkeydown="return stopTab(event);" /> 

i JS coś jak poniżej

function stopTab(e) { 
    var evt = e || window.event 
    if (evt.keyCode === 9) { 
     return false 
    } 
} 
Powiązane problemy