<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);
}
);
});
将鼠标放入输入框后,它会立即锁定。我在控制台中看不到任何错误或消息,服务器日志也没有显示任何内容。
有什么想法吗?
答案 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请求。用户几乎不会注意到延迟。