当用户在键入时暂停(而不是在每次按键后)时,我想触发一个ajax动作.所以我做了这样的事情:
当用户在空闲3秒后停止输入时,将执行完成功能...(它是 - 但为什么3次长短语 - 我希望它只运行一次,因为我在每次keydown后清除超时).问题是什么 ?
var timer;
var interval = 3000;
$('#inp').keyup(function() {
timer = setTimeout(done, interval);
});
$('#inp').keydown(function() {
clearTimeout(timer)
});
function done() {
console.log('ajax');
}
Run Code Online (Sandbox Code Playgroud)
关于jsfiddle的工作示例:http: //jsfiddle.net/vtwVH/
我有一个<input id="inp" type="text">用户写入,有时使用字典中的建议.当选择建议时,我做:
var input = $('#inp');
input.val(input.val()+suggestedText+' ');
input.focus(); // that is because the suggest can be selected with mouse
Run Code Online (Sandbox Code Playgroud)
一切都很好,但是当添加一个建议使得结果input.val()太长而无法适应编辑字段时,光标位于字符串的末尾(这很好),但只有字符串的开头在编辑中可见字段,因此光标也被隐藏.
一旦按下一个键(一个改变值的键),"滚动"就会到达隐藏开头的字符串的末尾...如何自动触发此行为,而不必按键?
我在这里找到了一个解决方案- 但由于整个输入体验发生了变化,这并不好......