怎么防止每次输入都去调ajax?

づ_lyf
  • 648
家庭户号:<input type='text' name='jthh'/>

现在是想要实现我输入家庭户号ajax查一些东西,然后我用keyup监听,但是我不想每次输入都去查,想等用户输完等待一段时间后在去查,这个要怎么实现呢?

回复
阅读 1.5k
5 个回答
✓ 已被采纳

大体的思路是,本来是立即去做doAjax()的,现在把它放到一个setTimeout()的延时任务。然后,每次触发keyup的时候用clearTimeout()取消上一个延时任务。 这样,当键盘事件连续、快速地触发的时候,是没有用的,只有当键盘输入停下,并过了至少一点时间之后,才会真正去执行ajax任务。

比如原本是:

function doAjax() {
    // ajax
}

function handleKeyUp(event) {
    doAjax();
}

修改为:

var timeFlag = null;

function doAjax() {
    // ajax
}

function handleKeyup(event) {
    clearTimeout(timeFlag);
    timeFlag = setTimeout(doAjax, 1000);
}

监听blur事件,失去焦点再触发ajax动作

比如说你的家庭号有多长,或者什么规则。判断符合这个长度和规则,然后ajax请求。简单来说就是对家庭号做一个正则验证,符合验证规则,那么ajax请求,不符合不请求。

你知道吗?

宣传栏