2013-03-21 6 views
5

Gibt es eine browserübergreifende Lösung, um 'Tab' für einen Eingabetyp = 'Text' zu deaktivieren?gibt es eine Möglichkeit, 'Tab' für einen Eingabetyp = 'Text' zu deaktivieren?

<input type='text' /> 

Drücken ‚Reiter‘ bewegt sich zum nächsten ‚fokussierbar‘ Komponente (zB eine Schaltfläche)

ich stattdessen ‚Tab‘ wollen, etwas anderes zu tun. Zum Beispiel Selbst in einem Tab Google-Suche wird nur den vorgeschlagenen Text statt sich zu bewegen Sie auf die nächste fokussierbare Komponente ...

dank

+1

setzen ein keydown Ereignis-Listener sein würde, yo – Rooster

+1

kann u erklären Sie bitte pls – PSR

+0

Ich habe bearbeitet, um besser zu erklären. @John, selbst wenn ich durch ein Schlüsselereignis benachrichtigt werde, weiß ich immer noch nicht, wie ich den Fokus verhindern kann. – Zo72

Antwort

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

Davon abhängt, wie Cross-Browser automatisch zu vervollständigen verwendet Sie sind obwohl das oben genannte nur IE9 (und andere moderne Browser) unterstützt.

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

IE8- Verwendung attachEvent statt addEventListener und e.keyCode statt e.which, und es gibt keine preventDefault, aber Sie können return false verwenden.

+0

'querySelector' wird auch nicht unterstützt von zB <7, und ff <3 http://caniuse.com/queryselector –

+0

querySelector ist irrelevant. Es ist der Code des Ereignishörers, der zählt. e.preventDefault – Zo72

+0

Und e.preventDefault()/e.which ist nicht in allen Browsern. – epascarello

1

Ja, überprüfen Sie, ob der Schlüssel war Tab gedrückt wird, und wenn ja, gibt false zurück:

<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 wird diese Arbeit auf Legacy-Browser ermöglichen.

http://jsfiddle.net/JxMhY/

Auf dieser Geige es zwei Formen zeigt, eine mit der Klasse „noTab“ und eine ohne, als Tab/Shift + Tab sind für viele Formen nützlich, aber nicht die, die eine spezielle „Tab hat " Aktion.

+0

'$ ('# form_name input')' wäre effektiver und sauberer :) –

+0

Er hat nicht angegeben, dass er jQuery verwendet, aber wenn er dann ist, dann ist dies die optimale Lösung –

2

eine nicht jQuery Implementierung ein bisschen so sein würde -

HTML

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

und JS so etwas wie unten

function stopTab(e) { 
    var evt = e || window.event 
    if (evt.keyCode === 9) { 
     return false 
    } 
} 
Verwandte Themen