有没有办法在输入类型='文字'上禁用'标签'?

时间:2013-03-21 16:26:39

标签: javascript jquery html focus

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

<input type='text' />

按“标签”可移动到下一个“可聚焦”组件(例如按钮)

我想要'tab'做其他事情。 例如 即使在Google搜索标签中,也只是用于自动填充建议的文字,而不是将您转移到下一个可关注的组件...

感谢

3 个答案:

答案 0 :(得分:12)

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 }。

答案 1 :(得分: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
    }
}

答案 2 :(得分:1)

是,检查按下的键是否为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”操作的表单。