11

是否有跨浏览器解决方案来禁用输入 type='text' 上的 'tab' ?

<input type='text' />

按“选项卡”将您移动到下一个“可聚焦”组件(例如按钮)

我想改为“标签”做其他事情。例如,即使在谷歌搜索选项卡中,也只是用于自动完成建议的文本,而不是将您移动到下一个可聚焦的组件......

谢谢

4

3 回答 3

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

取决于你所说的跨浏览器,因为上面只支持 IE9(和其他现代浏览器)。

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

IE8-用attachEvent代替addEventListenere.keyCode代替e.which,也没有preventDefault,但可以用return false

于 2013-03-21T16:31:17.600 回答
3

非 jQuery 实现会有点像这样 -

HTML 将是

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

和JS如下

function stopTab( e ) {
    var evt = e || window.event
    if ( evt.keyCode === 9 ) {
        return false
    }
}
于 2013-03-21T16:34:47.980 回答
2

是的,检查按下的键是否是 tab,如果是,则返回 false:

<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 将允许在旧版浏览器上进行这项工作。

http://jsfiddle.net/JxMhY/

在那个小提琴上,它显示了 2 个表单,一个带有“noTab”类,一个没有,因为 tab/shift+tab 对许多表单很有用,但不是一个具有特殊“tab”操作的表单。

于 2013-03-21T16:31:48.403 回答