jquery监控数据是否变化(修正版)
转:jomhy
jquery监控数据是否变化(修正版)
之前写的那篇中存在许多bug,今天重新整理了一下。还请各位指教
View Code
- 1 ///<reference path="query-1.5.1.min.js" />
- 2 (function($) {
- 3 /*监控页面数据是否发生变化*/
- 4 var pageDataChange = false;
- 5 var tagName = "Input, Select, Textarea";
- 6 var ctrlIds = [];
- 7 $.fn.MonitorDataChange = function(options) {
- 8 var deafult = {
- 9 arrTags: tagName, //需监控控件的tagName属性
- 10 arrCtrls: ctrlIds //不监控的控件ID
- 11 };
- 12 var ops = $.extend(deafult, options);
- 13 tagName = ops.arrTags;
- 14 ctrlIds = ops.arrCtrls;
- 15 /*元素第一次获取焦点时缓存该元素数据*/
- 16 $(ops.arrTags).one("focus", function() {
- 17 if ($.inArray($(this).attr("id"), ops.arrCtrls) != -1) {
- 18 return;
- 19 }
- 20 $(this).data('initData', $(this).val());
- 21 });
- 22 };
- 23 /*获取页面数据是否已经改变*/
- 24 $.fn.isChange = function() {
- 25 $(tagName).each(function() {
- 26 if ($.inArray($(this).attr("id"), ctrlIds) != -1) {
- 27 return;
- 28 }
- 29 /*如果该元素的initData缓存数据已定义并且不等于他的value值,标识该页面中数据发生变化*/
- 30 if (typeof ($(this).data('initData')) != 'undefined') {
- 31 if ($(this).data('initData') != $(this).val()) {
- 32 pageDataChange = true;
- 33 }
- 34 }
- 35 });
- 36 return pageDataChange;
- 37 };
- 38 })(jQuery);
复制代码前台调用:
View Code
- 1 <script type="text/javascript">
- 2 var is_change = false;
- 3
- 4 $(document).ready(function() {
- 5 $("form").MonitorDataChange();
- 6 });
- 7 function alertMsg() {
- 8 is_change = $.fn.isChange();
- 9 if(is_change){
- 10 alert('数据发生改变!');
- 11 }
- 12 }
- 13 </script>
- 14 <input type="text"/>
- 15 <input type="text" />
- 16 <input type="text" />
- 17 <input type="text" />
- 18 <asp:TextBox runat="server"></asp:TextBox>
- 19 <asp:CheckBox runat="server" />
- 20 <input type="button" value="true" onclick="alertMsg();"/>
复制代码
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论