判断一个表单是否被修改过

发布于 2022-09-07 04:13:21 字数 5103 浏览 14 评论 1

转:JKisJK  

判断一个表单是否被修改过

判断一个表单是否被修改过,在不少地方需要用到。
例如,用户打开一个订单编辑页,过一会后,他要关闭页面,
如果用户有修改,那最好能提示下他“请问您确定要离开本页吗?确认离开当前页面吗?n未保存的数据将会丢失!n请按“确定”以继续,或者按“取消”回到当前页。”
如果用户没有修改,则不用提醒。

QWrap里提供了一个判断form是否已有改变的方法,代码如下:

  1. /**         
  2. * 判断form的内容是否有改变        
  3. * @method    isFormChanged        
  4. * @param    {element}    el            form对象        
  5. * @param    {string}    filter    (Optional)    过滤函数,会被循环调用传递给item作参数要求返回布尔值判断是否过滤        
  6. * @return    {bool}                    是否改变        
  7. */        
  8. var isFormChanged= function (el, filter) {            
  9. el = g(el);            
  10. filter = filter || function (el) { return false; };            
  11. var els = el.elements, l = els.length, i = 0, j = 0, el, opts;                        
  12. for (; i < l ; ++ i, j = 0) {               
  13. el = els[i];                                
  14. switch (el.type) {                    
  15. case "text":                    
  16. case "hidden":                    
  17. case "password":                    
  18. case "textarea":                        
  19. if (filter(el)) break;                        
  20. if (el.defaultValue != el.value) return true;                        
  21. break;                    
  22. case "radio":                    
  23. case "checkbox":                        
  24. if (filter(el)) break;                        
  25. if (el.defaultChecked != el.checked) return true;                        
  26. break;                    
  27. case "select-one":                        
  28. j = 1;                    
  29. case "select-multiple":                        
  30. if (filter(el)) break;                        
  31. opts = el.options;                        
  32. for (; j < opts.length ; ++ j) {                           
  33. if (opts[j].defaultSelected != opts[j].selected) return true;                        
  34. }                        
  35. break;               
  36. }            
  37. }            
  38. return false;        
  39. };

复制代码它的第一个参数是form对象。返回值是这个表单是否与load页面时的值的状态是否有变更。
第二个参数是:是为了应对“某些元素值就算是变了,也当作未变”的需求。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淡淡的优雅 2022-09-15 10:53:51

学习了,谢谢分享,:wink:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文