我目前正在使用此功能获取结果而无需输入点击或提交表单,只需键入:
即可<script type="text/javascript">
$(function() {
$("#Form_id").bind('keyup',function() {
var value = $('#Input_id').val();
$.post('process_search.php?term='+value+'&buscar=1',{value:value}, function(data){
$("#router").html(data);
});
return false;
});
});
</script>
好的,这很好用。但是有一个很小的小问题:如果我输入'hello'发送4个请求。
为了解决这个问题,我认为我可以尝试检测空格何时输入,然后提交表单。解决方案A
另一个解决方案是检测最后一个keyhit何时处于x毫秒,解决方案2
我喜欢两者,但我会对两者都提出意见,并且给corse提供一些帮助:$
谢谢!
答案 0 :(得分:4)
最简单的方法是使用setTimeout和clearTimeout,这样你就可以在x毫秒过后延迟。
$(function () {
var delay;
$("#Form_id").bind('keyup', function () {
var value = $('#Input_id').val();
clearTimeout(delay)
delay = setTimeout(function () {
$.post('process_search.php?term=' + value + '&buscar=1', {
value: value
}, function (data) {
$("#router").html(data);
});
}, 1000);
return false;
});
});
关于jsfiddle的简单示例。
答案 1 :(得分:1)
Ext Core http://docs.sencha.com/core/可让您轻松完成以下操作。查看Ext.Element文档
function sendRequest(e) {...}
Ext.get("#Form_id").on('keyup', sendRequest, null, {buffer: 1000});
我知道帖子是关于jQuery的,我的观点是这个功能可以被抽象出来,我不相信jQuery不会提供这个选项。