IE 11锁定输入

时间:2014-03-10 20:13:53

标签: jquery html input

IE似乎锁定了这段代码,我无法弄清楚原因。它在FF和Chrome中运行良好:

<input type="text" class="form-control" placeholder="Username Search" name="uname" id="uname" value="">

脚本:

$('#uname').on('input', function() {
        $.get('?go=more_users&searchby=username&searchterm='+encodeURIComponent($('#uname').val()),function (result) 
        {
            $('#main-block').html(result);
            $('#uname').focus();
            tmpStr = $('#uname').val();
            $('#uname').val('');
            $('#uname').val(tmpStr);
        }
    );
});

将鼠标放入输入框后,它会立即锁定。我在控制台中看不到任何错误或消息,服务器日志也没有显示任何内容。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

由于迁移到keydown似乎可以解决锁定问题,因此添加setTimeout应该可以解决跨浏览器问题并提高页面效率(它应该会显着减少发送的ajax请求的数量。)

$('#uname').on('keydown', function () {
    var $this = $(this);
    clearTimeout($this.data("timer"));
    $this.data("timer",setTimeout(function(){
        $.get('?go=more_users&searchby=username&searchterm=' + encodeURIComponent($this.val()), function (result) {
            $('#main-block').html(result);
            $this.focus();
            // what is the purpose of the next three lines???            
            tmpStr = $this.val();
            $this.val('');
            $this.val(tmpStr);
        });
    },250));
});

如果用户停止输入250ms,这将导致仅发送ajax请求。用户几乎不会注意到延迟。