基于jQuery的监控表单元素变化的小插件

对于监控输入框或者下拉框这些表单元素,大家都有很有方法。keyup,keydown,change这些事件去监控都是一种思路,不过基本在都存在缺点。本文采用监控focus和blur事件的方式来实现:focus后开始监控,blur后停止监控,兼容性很好,不多说了,直接上代码了:

实现代码:
$.fn.focuschange = function(callback) {   
    return this.each(function() {   
        var state = $.data(this, "focusblurlistener", {   
            validating: true,   
            value: undefined   
        });   
        var box = $(this);   
        box.unbind(".focusblurlistener").bind("focus.focusblurlistener", function(event) {   
            state.validating = true;   
            state.value = state.value || "";   
            (function() {   
                if(state.validating) {   
                    if(state.value != box.val()) {   
                        callback.call(this, event, state.value, box.val());   
                        state.value = box.val();   
                    }   
                    setTimeout(arguments.callee, 200);   
                }else{   
                    return;   
                }   
            })();   
        }).bind("blur.focusblurlistener", function() {   
            state.validating = false;   
        });   
    });   
};  
使用方式:
$(function(){   
    $(selector).focuschange(function(e,oldValue,newValue){   
        alert('旧值:' + oldValue + ";新值:" + newValue);   
    });   
});  
大家也看到源码的实现方式了,focus的时候出发一个不断自我递归的函数监控元素value变化;blur的时候停止监控。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值