我有input text的输入框,给这个输入框添加了onblur事件,函数是ajaxfun();
还有一个radio,有两个值,添加了onchange事件,函数是ajaxfun();两个对象绑定的函数是同一个,就有一个问题,我在text里输入值以后,直接点击radio,就会引起text给blur,触发了事件函数,radio的onchange也触发了,这样有时候执行ajax后返回的时间不是按顺序的,有时候会onchange先返回了,blur后返回了,这个事件顺序要怎么控制呢?让他能保证blur的先返回,onchange的后返回。或者有没有什么办法,让因为点击了radio触发onchange事件,text给blur了,这时候这个onblur事件不执行。onblur事件

解决方案 »

  1.   

    blur ajax返回后检测某个变量是否为1  是的话触发change事件要执行的那个函数  不是的话不执行
    change事件只是给改那个变量试试
      

  2.   

    思路跟楼上一样,做点补充。ajaxfun()给这个函数加个参数this,即ajaxfun(this)。在ajaxfun方法调用时,如果发现当前是Input触发的,就修改一全局变量为1,此时如果radio事件触发,发现变量为1,可使用setInterval或setTimeout设置一个延迟,如setTimeout("ajaxfun(0)",1000),过一秒再检查变量。如果变量为为0,则执行radio的onchange事件。注意,在ajax的返回方法里面将变量置为0,不管是由谁触发的事件。
      

  3.   

    有个很简单处理方式blur事件中移除radio的change事件,setTimeout 10毫秒重新绑定该事件即可避免你上面描述的情况
      

  4.   

    那楼主你是要在什么情况下才回去触发你的blur事件的呢????
      

  5.   

    ajaxfun() 加参数判断是 change事件 还是 onblur事件