目的:当我在输入框输入内容的时候,就进行ajax搜索。现在是每次输入一个就搜索,输入1就搜索一次;输入12,就搜索了两次。就我想延迟0.5执行,这样 如果在0.5内输入12的时候就ajax只请求一次,减小了服务器的压力。
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="last-name">
计划生产数量(件)
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<input type="text" id="scheduledProducedUnits" name="scheduledProducedUnits"
class="form-control col-md-7 col-xs-12">
</div>
</div>
function orChange() {
$("#resultTipInfo").removeAttr('disabled'); //改变订单后应该进结果提示按钮取消禁用
machListTip();
var num = $("#scheduledProducedUnits").val();
if (unitScheduledProducedUnits != num && num != "" && !isNaN(num) && num > 0) { //初始化计划生产数量的值和改变后计划生产数量的值不相等则需要调用
url_scheduling = '/fudaMes/machInfo/listAllMachInfoInChoseMach?type=auto'tableListData.ajax.url(url_scheduling).load();
} else {
new PNotify({
text: '计划生产数量必须是数字且必须大于零',
type: 'error',
styling: 'bootstrap3'
});
$('#machineNoList').hide();
}
unitScheduledProducedUnits = num
}
var last; //全局变量
$("#scheduledProducedUnits").keyup(function(event) {
last = event.timeStamp;
setTimeout(function() { //利用event的timeStamp来标记时间,这样每次的keyup事件都会修改last的值,注意last必需为全局变量
if (last - event.timeStamp == 0) { //如果时间差为0(也就是你停止输入0.5s之内都没有其它的keyup事件发生)则做你想要做的事
orChange(); //根据自己的需要进行校验
}
},
500)
});