js检测输入域的值是否变化
场景:
用户在新建或编辑表单数据时,操作关闭按钮,如果有输入项已经变动时,提示用户存在信息变更,是否放弃当前操作。
初始值情景:
1、通过原生的value指定,如: <input value='26'/>
2、通过js脚本设置(如前端框架组件初始化),如: document.querySelector('input').value = '26'
先提供初始化"初始值"及检测值变动的原生js脚本(依赖jquery):
/**
* 初始化初始值
* @param ctn: 初始化范围,默认document
**/
function initInputs(ctn){
ctn = ctn || document;
$(':input',$(ctn)).each(function(idx,domItem){
domItem.setAttribute('value',domItem.value);
});
}
/**
* 检测值是否已变更
* @param ctn: 初始化范围,默认document
* @return boolean: true-有变动、 false-无变动
**/
function chargeInputs(ctn){
ctn = ctn || document;
var isChanged = false;
$(':input',$(ctn)).each(function(idx,domItem){
var originalValue;
if(domItem.attributes.value) originalValue = domItem.attributes.value.value;
if(domItem.value != originalValue) isChanged = true;
});
return isChanged;
}
何时调用初始化"初始值"脚本?
一般情况,在执行完输入域的初始设值之后调用initInputs即可;
如果项目中用到了前端框架,以easyui为例,需要在组件解析完成时调用initInputs,如下:
$.parser.onComplete=function(context){
initInputs(context);
}
完毕 \(^o^)/
js检测输入域的值是否变化的更多相关文章
- vuejs2.0与1.x版本中怎样使用js实时访问input的值的变化
vuejs 2.0中js实时监听input 在2.0的版本中,vuejs把v-el 和 v-ref 合并为一个 ref 属性了,可以在组件实例中通过 $refs 来调用.这意味着 v-el:my-el ...
- js 检测输入内容是否为空(小程序,网站)
一.输入内容只要有空格就会返回true if(/\s*/.test(data)){ return true }else{ return false } 二.先替换掉空格,更利于赋值或者判断 1.需要判 ...
- oninput和onpropertychange实时监听输入框值的变化
oninput和onpropertychange实时监听输入框值的变化 传统监听输入框的做法就是使用keyup.keydown.keypress,或者change事件来实现,但keyup.keydow ...
- JS数量输入控件
JS数量输入控件 很早看到kissy首页 有数量输入控件,就随便看了下功能 感觉也不怎么难 所以也就试着自己也做了一个, 当然基本的功能和他们的一样,只是用了自己的编码思想来解决这么一个问题.特此给大 ...
- jQuery封装自定义事件--valuechange(动态的监听input,textarea)之前值,之后值的变化
jQuery封装自定义事件--valuechange(动态的监听input,textarea)之前值,之后值的变化 js监听输入框值的即时变化 网上有很多关于 onpropertychange.oni ...
- js判断输入是否为数字的具体实例
这篇文章介绍了js判断输入是否为数字的具体实例,有需要的朋友可以参考一下 <html xmlns="http://www.3lian.com/"> <head&g ...
- js实时监听input中值得变化
<!DOCTYPE html> <html> <head> <title>zepto</title> <meta name=" ...
- VUE实现Studio管理后台(完结):标签式输入、名值对输入、对话框(modal dialog)
一周的时间,几乎每天都要工作十几个小时,敲代码+写作文,界面原型算是完成了,下一步是写内核的HTML处理引擎,纯JS实现.本次实战展示告一段落,等RXEditor下一个版本完成,再继续分享吧.剩下的功 ...
- 设置输入域(input/textarea)中文本光标的位置
以前记录了一篇 将光标定位于输入框最右侧的实现方式 ,实现光标定位在文本的最末.这种需求往往在修改现有的文本.有时可能还需要把光标定位在首位,或者中间某个位置,这就需要实现一个更通用的方法. 这个方法 ...
随机推荐
- python之路——13
王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594 复习 1.函数 1.函数的定义和调用 2.参数及传递顺序 形参角度: 位置参数:*args:默认参数:**k ...
- 涨姿势:Java 异常?尝试自定义异常
1.异常 在Java中,每个异常都是一个名叫Throwable的类的一个实例 我们常用的try-catch-finally语句 try 尝试去执行try语句块里的内容,如果有异常,将其捕获,并执行ca ...
- Learn the Basics - RN2
使用Image 1. 引用 import { Image } from 'react-native'; 2. 使用 format: <Image source={{}} style{{}} /& ...
- [UGUI]圆形Image
参考链接: http://www.cnblogs.com/leoin2012/p/6425089.html 前面说过Mask组件会影响性能:https://www.cnblogs.com/lyh916 ...
- LINUX 中实现逻辑卷、自动挂载
实验项目: 准备3块10G的空闲分区,将类型ID修改为8e(LVM) 使用其中2块分区组建名为myvg的卷组,查看此卷组信息 先检查有哪些物理卷 讲两块空闲分区转换成物理卷 再检查有哪些物理卷,查看其 ...
- python 修改dataframe的列名
1. 修改全部列名 df.columns base_data_model.columns = [u'有效率',u'提交率',u'参与度',u'回放占比',u'主好评率',u'辅好评率',u'是否付费' ...
- Entity Frame Code First 简易教程
简介 什么是ORM 搭建Entity FrameWork CodeFirst应用 数据库迁移 表属性常见配置 Entity FrameWork 一对多.多对多 一.简介 Entity Framewor ...
- linux上用route添加/删除路由
1. 查看 route -n 2. 添加 route add -net 9.123.0.0 netmask 255.255.0.0 gw 9.123.0.1 3. 删除 route del -net ...
- java性能优化总结
本人在java中积累了一些性能优化相关的经验,现在总结如下: 批量处理服务性能优化 RTB服务性能优化 BasicData线上问题解决,疯狂FullGC的问题 BasicData线上部分服务器cpu使 ...
- MySql:SELECT 语句(二)排序 ORDER BY 的使用
1.按单列排序 语句: SELECT col FROM tablename ORDER BY col; ( 一般情况下, ORDER BY 子句中使用的列为选择的列,但也可以使用其他列) 2.按 ...