一个小需求,监控input的值变化,查阅文档,发现很不方便。

一堆事件如,onpropertychange, input, keyup, paste, change, blur,又不能同时监听这些事件,因为当输入一个值时,可能同时出发多个,这样会造成多次业务逻辑的执行。

想着能不能一种简单有用的办法,又解决跨浏览器。想到只监听keyup,和paste事件,同时过滤掉无效的不改变值的keyup。怎么判断无效呢?很自然的一个办法就是在dom中缓存原先的值然后做对比。按照这个思路封装一个jquery的插件,致敬angularjs。

(function($) {

$.fn.watch = function(callback) {

return this.each(function() {

//缓存以前的值

$.data(this, 'originVal', $(this).val());

//event

$(this).on('keyup paste', function() {

var originVal = $(this, 'originVal');

var currentVal = $(this).val();

if (originVal !== currentVal) {

$.data(this, 'originVal', $(this).val());

callback(currentVal);

}

});

});

}

})(jQuery);

调用:

$("input:text").watch(function(value) {

console.log(value);

});

一些感悟,学习不能仅仅浮躁与表面,更加注重基础知识的积累。扎实的基础,很多时候事情就会变得简单。

最近在看clojure,非常不错的一门优雅的语言。fp确实很棒,一门语言不仅仅是语言更重要的是对思维的启发,对解决问题思路的启发。了解clojure更加适宜jquery的一些特性,比如强大的选择器。以前不明白为什么jquery要这样,比如,first,last,:nth(), not(), filter, $.map, $.grep, $.each, 这都是fp的特性啊。underscore更是强化到极限。

jquery检测input变化_jquery 监控input输入框值得变化相关推荐

  1. jquery 检测回车事件_jquery 回车事件

    简单地记下jquery实现回车事件,代码如下: 全局: $(document).keydown(function(e){ if(e.keyCode==13){ $(".login-li in ...

  2. php动态删除输入框,jQuery实现动态添加和删除input框实例代码

    本文实例为大家分享了jQuery实现动态添加和删除input框的具体代码,供大家参考,具体内容如下 选项 $(function(){ // 添加选项 $("#opbtn").cli ...

  3. Jquery php 点击td变成input,修改后失去焦点发送数据

    html部分 <Td><?php echo $row['bigclassid']?></Td> <td height="25" width ...

  4. jquery实时监听输入框值变化

    在做web开发时候很多时候都需要即时监听输入框值的变化,以便作出即时动作去引导浏览者增强网站的用户体验感.而采用onchange时间又往往是在输入框失去焦点(onblur)时候触发,有时候并不能满足条 ...

  5. jQuery Mobile中文本输入域input、textarea的data-*选项

    全栈工程师开发手册 (作者:栾鹏) jQuery Mobile 所有data-*选项 jQuery Mobile中文本输入域input.textarea的data-*选项 带有 type=" ...

  6. JavaScript监控输入框字数变化,超出限制则禁止输入

    JavaScript监控输入框字数变化,超出则禁止输入 不废话,给你看看效果: 1.无输入状态: 2.输入三个字符: 3.超出5个后报错: 现在粘出代码,首先是html代码: <body> ...

  7. 实时监听输入框值变化的完美方案:oninput onpropertychange

    实时监听输入框值变化的完美方案:oninput & onpropertychange 原文:实时监听输入框值变化的完美方案:oninput & onpropertychange 在 W ...

  8. input搜索mysql_实现input输入时智能搜索

    //智能搜索 function oSearchSuggest(searchFuc) {var input = $('#in');var suggestWrap = $('#gov_search_sug ...

  9. 工具类commons-io的Tailer用法,用来监控文件内容的变化情况

    一.前言:在Linux下有使用tail命令 在Commons-io中也提供这种方法 二.他采用的是线程方式来监控文件内容的变化 1.Tailer类(采用线程的方式进行文件的内容变法) 2.Tailer ...

最新文章

  1. 五十一、微信小程序云开发中的云函数
  2. 设计模式总结一波点点
  3. MySQL优化之三:SQL语句优化
  4. 高效大数据开发之 bitmap 思想的应用
  5. Django从理论到实战(part46)--View类
  6. 一维抛物线的matlab求解,一维抛物线偏微分方程数值解法(附图及matlab程序)
  7. 苏宁买买买!将收购家乐福80%股份 成为家乐福中国控股股东
  8. java程序崩溃查询,java – 有程序识别它上次崩溃了吗?
  9. Windows系统下使用Jenkins自动化发布.NET core程序到Linux平台下利用Docker快速启动
  10. 同济线性代数教材(第五版)-第1章 行列式
  11. java 解析证书_Java x509证书解析类
  12. 使用shell命令行查询wifi信号强度
  13. linux 中压缩文件夹命令行,Linux下压缩文件夹命令使用
  14. Django 2.1.7 Celery 4.3.0 Periodic Tasks 周期性任务调度
  15. 计算机通信网络设备调试员(三级 高级),计算机通信网络设备调试员国家职业标准.doc...
  16. SpringClout 入门笔记
  17. Django开发个人博客网站——12、实现不同大小的标签云样式
  18. 香港电影男演员十大代表
  19. ICDAR 2017 数据集介绍
  20. Dynamics 365 JS调WEB API 报missing privilege ae5c41f0-e823-4cb9-b25a-8ef020201973

热门文章

  1. java 多线程学习
  2. 【刘文彬】EOS商业落地利器:多签名操作与应用
  3. 2018年测试状况调查
  4. Yii 2 —— Backend自动出现登录页
  5. 关于数据传输格式的序列化和反序列化
  6. 罗森伯格荣获2015年度中国数据中心优秀供应商与中国十大布线品牌两项大奖
  7. 解决ora-00054 Oracle锁表问题
  8. Oracle 11G 64位发布出现错误
  9. 企业进销存管理系统 email_移动进销存让企业高效进行汽车配件管理
  10. 前端 如何检测到当前的网页已经退出_javascript在当前窗口关闭前检测窗口是否关闭...