一个textbox  js的onchange事件出发一个webservice,onchange一次触发一次webservice方法,如果快速change的话就会不断反复调用,如何做到如果已经在运行这个webservice的时候再触发textbox的onchange事件不调用webservice?

解决方案 »

  1.   

    var processing = false;
    开始WebService调用时processing = true;
    onchange时先判断processing是否为true,如果是,不调用WebService
    OnComplete回调成功时processing= false;没试过。
      

  2.   

    简单的办法,用一个变量记录ws的返回值.可以用个 hidden input.然后根据 input的值来判断是否再次调用ws.比喻第一次调用onchange.查看 input的值是""(初始值),执行WS.设置input.text = "wait"
    再次调用onchange 查看input的值是 "wait" 则不调用WS
    如果上个WS返回值了,则设置input.text = "over";
    再次调用onchange 查看input的值是 "over" 则可以调用WS
      

  3.   

    在js里加个变量processing来判断是否正在处理.如果是则不再发出请求.处理结果返回后再将这个变量改回false另外,最好考虑用户输入的速度,连续输入时可以不发请求,等有一个小滞时才发出请求.否则服务器的消耗可能会比较大.