我只是注意到keypress事件的序列在Firefox和IE上的执行方式不同:在Firefox上,如果在有重点的输入上进行keypress,则该字符会写在框中,然后会触发该事件附带的函数。在IE上则相反。

所以这是我的问题,我有两个彼此相邻的输入文本,当我在第一个字符中写入单个字符时,我希望第二个字符紧随其后。这在Firefox上可以完美运行,但在IE上却不能,因为它甚至在第一个输入中写入字符之前就切换到第二个输入...

这是我使用的代码的简化(两个元素都是文本输入):

        var one = document.getElementById('one');
        var two = document.getElementById('two');

        one.addEventListener('keypress', function(e) {
            e.target.nextElementSibling.focus();
        });


我该如何解决?屏幕上出现按键后,如何指示切换对焦?

最佳答案

我猜你可以这样使用setTimeout



var one = document.getElementById('one');
var two = document.getElementById('two');

one.addEventListener('keypress', function(e) {
    setTimeout((function(elem){
        return function(){
            elem.focus();
        };
    })(e.target.nextElementSibling),0);
});

<input id="one" type="text"/><input id="two" type="text"/>





setTimeout将在下一个执行堆栈上触发该函数,因此在元素填充之后。

07-24 09:20