用JavaScript 记录用户在表单中所作的修改

js_06 表单案例 文章目录1.表单增加功能2.表单删除功能3.表单修改功能4.表单确定功能 1.表单增加功能 获取要操的表格。 开始增加行:增加的行的位置在表格的倒数第二行,下标:总行数-1。空行 获取表格行目前的最大下标 给新增加的行对象 newRow添加 id属性 往空行里面增加4个列 // 增加行 var myTable = document.getElementById("order"); function addRow(){ var row 阅读详情

 TrackChanges.js:用JavaScript 记录用户在表单中所作的修改


原理:
1.为form 中的每个field (submit/reset/button/image除外)生成一个虚假的INPUT element,用于保存页面装载时form 中每个element的初始值。

2.在form 提交之前,比较form 中的每个field 与上面一步生成的虚假的INPUT element,记录二者的差别(diff)。然后合并所有的差别并赋值到另一个新的INPUT element中。

这样,用户在前台操作过程中所修改的内容就可以随form 一起提交到服务器端进行处理了。

1. trackChange.js

 

 

/**********************************************************
TrackChanges v0.1 By lhelper <lhelper at gmail dot com>

 


track changes of client end form fields
1. append dummy input fields onto the raw form, which has
the origianl value, checked status, etc. as the real one

2. compare the dummy input fields with the originals, record
the changes (unix/linux diff format) with one more real
field, whose name is '_tc_c' (default)
**********************************************************/
var TrackChanges={
initialize : function _init(frm) {
if(!frm) { // smart check
return;
}
var eles=frm.elements;
for(var i=0, n=eles.length; i<n; i++) {
var ele=eles[i];
// alert(ele.tagName + ":" + ele.type + ":" + ele.name + ":" + ele.value);
// 1. omit the submit button (submit, reset, button, image, etc.)
if(ele.tagName=="INPUT") {
if(ele.type=="submit" ele.type=="reset" ele.type=="button" ele.type=="image") {
continue;
}
if(ele.type!="checkbox" && ele.type!="radio" && document.getElementsByName(ele.name).length > 1) {
alert("There are " + document.getElementsByName(ele.name).length + " field elements with the same name (" + ele.name + "), which can result in unbelievable output!");
return false;
}
}

 


// 2. append dummy field _tc_f[ele.name][ele.id][0] onto the form
var obj=document.createElement("INPUT");
obj.type="hidden";
//obj.type="text";
if(ele.tagName=="INPUT" && (ele.type=="checkbox" ele.type=="radio")) {
if(!ele.id) {
ele.id=ele.name + "_" + ele.value;
}
obj.name="_tc_f[" + ((ele.type=="checkbox") ? "checkbox" : "radio") + "][" + ele.name + "][" + ele.id + "][0]";
obj.checked=ele.checked;
} else {
if(!ele.id) {
ele.id=ele.name;
}
obj.name="_tc_f[input][" + ele.name + "][" + ele.id + "][0]";
}
obj.value=ele.value;
obj.disabled=true;
frm.appendChild(obj);
}
},

 


recordChanges : function _diff(frm, fn) {
if(!frm) { // smart check
return;
}
var cmsDiff="";
for(var eles=frm.elements, i=0; i<eles.length; i++) {
var re=new RegExp("_tc_f//[(.*?)//]//[(.*?)//]//[(.*?)//]//[0//]");
var m=re.exec(eles[i].name);
if(m == null) {
continue;
}
if(m[1] == "checkbox" m[1] == "radio") {
if(document.getElementById(m[3]).checked != eles[i].checked) {
cmsDiff+="< " + m[3] + ":" + eles[i].checked + "/n----------/n" + "> " + m[3] + ":" + !eles[i].checked + "/n/n";;
}
} else {
if(document.getElementById(m[3]).value != eles[i].value) {
cmsDiff+="< " + m[3] + ":" + eles[i].value + "/n----------/n" + "> " + m[3] + ":" + document.getElementById(m[3]).value + "/n/n";;
}
}
}
//alert(cmsDiff);
var obj=document.createElement("INPUT");
obj.type="hidden";
//obj.type="text";
obj.name=(fn) ? fn : "_tc_c";
obj.value=cmsDiff;
frm.appendChild(obj);
}
};

 

 

2. 使用方法:

 

 


<script language=JavaScript>
<!--
function _submit(frm) {
// 记录用户修改的内容
TrackChanges.recordChanges(frm);

 


frm.method="post";
frm.action="news_edit_save.jsp";
return true;
}
// -->
</script>
......

 


<form method="POST" action="/dev/null" name="news_info" onSubmit="return _submit(this)">
<input type="text" name="news_title" maxlength="50" value="">
......
<input type="submit" value="确认录入" name="btnSave" class="submit">
</form>

 

<script language="javascript">
<!-- //
// 初始化 TackChanges
TrackChanges.initialize(document.news_info);
// -->
</script>

 

自定义JavaScript插件用于埋点日志记录用户表单输入数据时间用于用户安全数据分析 1.自定义两个js插件 ,一个用于统计用户表单中每项的输入时长,一个用于生成cookie,提交表单时会将记录数据存入cookie中 一并发往服务器端 2.jquery.cookie.js【可以将记录参数存入cookie中】 (function (factory) { if (typeof define === 'function' && define.amd) { //... 阅读详情

相关推荐

track-changes:用于跟踪对象属性更改以用于调试的非常简单的 API

跟踪变化 用于跟踪对象属性更改以用于调试的非常简单的 API。 使用安装 npm i track-changes --save 用法 var app = new Changes ( ) ; app . track ( key , 'brief comment about value' , value ) ; 例子 (另见 ) 这是一个基本示例,展示了如何跟踪应用程序中值的更改。 var app = new Changes ( ) ; var a = 'a' ; app . track ( 'a' , 'change #1' , a ) ; a = 'b' ; app . track ( 'a' , 'change #2' , a ) ; a = 'c' ; app . track ( 'a' , 'change #3' , a ) ; a = 'd' ; app . track

js实现双击修改表单信息

目录案例目的实现思路实现过程 案例目的 参考商品表,单击操不可修改商品信息;当双击一个数据后,即可修改数据信息,当离开该数据范围后就修改成功(数据库中的数据信息也跟着修改成功)。 实现思路 1.在table中显示商品信息,每一条商品信息都为readonly状态 2.再通过js(即在script标签中)为每个数据标签绑定一个双击事件,双击该元素时就将该元素readonly状态变为false(即可编...

zjt_1010的博客 1781

track-changes:用于保存和压缩单个文档更新到可浏览历史记录的 API

背页/跟踪更改 用于将原始编辑器更新转换为压缩和可浏览历史记录的 API。 验收测试可以使用命令运行 AWS_BUCKET=<bucket> AWS_ACCESS_KEY_ID=<aws> AWS_SECRET_ACCESS_KEY=<aws> make test 其中bucket-name 、 aws-access-key和aws-secret-access-key是 AWS S3 存储桶的凭证。 执照 此存储库中的代码在 GNU AFFERO GENERAL PUBLIC LICENSE 版本 3 下发布。可以在LICENSE文件中找到副本。 版权所有 (c) Overleaf,2014-2019。

JS实现input填写的数据进行表格的录入、修改和保存

JS实现input填写的数据进行表格的录入、修改和保存

m0_59648875的博客 3154

js 原生js写一个可编辑表格实例,一看就会,非常容易理解,方法详细,分布讲解!!! 详细用到的dom操,childNode,createElement,.appendChild操,

JS可编辑表格 1.实现的功能 表格可编辑的部分单击就可以生成一个输入框,并且自动获取输入框焦点 在输入框输入修改的内容之后,当输入框失去焦点的时候就会判断输入的内容是否满足条件。 如果满足条件就修改内容,如果不满足条件就弹出提示 修改的内容再修改原始的数据 具体可以看如下图片 点击生成输入框 输入内容 完成修改 如果不满足条件就会返回原始值 其他的各项数据操基本相同 2.实现的思路 首先在页面上生成表格的表头thead部分,然后tbody部分留空 然后在JS里面写入数据,用写的数据动态生成tbo

qq_52168812的博客 3200

【原生】js实现表格的增删改查

说在前面的,写给小白白的,大神请绕道~ 今天用原生js写一下动态表格的增删改查,主要是熟悉一下js的DOM操。 首先,做一个表格,用来显示提交的数据,如图下: 此处,我添加了编号、姓名、密码、生日、地址五个属性,另外加选中、操两个操,亲们可以自行添加,布局代码如下: <table class="table table-hover table-bordered" id="mytable"> <thead> <tr> ..

liyongchunscr的博客 2732

JSJavaScript)数据校验 表单校验-案例

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 今人不见古时月,今月曾经照古人。 古人今人若流水,共看明月皆如此。 ——《把酒问月·故人贾淳令予问之》 文章目录JSJavaScript)数据校验 表单校验-案例1. 目的2. 实现3. 案例演示3.1 预览效果3.2 示例代码3.3 示例代码演示3.4 示例代码下载 JSJavaScript)数据校验 表单校验-案例

欢迎您的莅临,感谢您的阅读。 1734

element 修改表单值后表单验证无效_javascript自学记录表单脚本1

第14章 表单脚本14.1 表单的基础知识​获得表单元素:// 取得id为form_1的元素varform=document.getElementById("form_1");// 得到第一个表单元素varfirstForm=document.forms[0];// 得到名称为test的formvarmyForm=document.forms["test"];14.1.1 提交表...

weixin_39625162的博客 195

在 Odoo 18 表单视图中使用 JS 类的方法

Odoo 18 采用了现代化的 JavaScript 框架——Odoo Web Library (OWL),基于组件化架构设计运行。这一框架显著增强了 Odoo 的功能,支持创建自定义小部件、表单视图管理、自定义操、前端功能、API 调用、事件处理等。在 JavaScript 小部件、模板和视图的上下文中,我们主要使用js_class为关键属性,来定义和扩展系统在用户界面方面的行为。js_class使开发人员能够将 JavaScript 类链接到 XML 元素,从而在 Odoo 中动态启用自定义交互。

智能化技术分享 1361

track-word-changes

Word 文档跟踪器 此存储库包含一个命令行工具,可打开 Word 文档的跟踪更改。 要求 为了提供与 Word 93-2003 的兼容性,您需要unoconv实用程序。 如果您使用的是 Ubuntu,则必须安装以下命令行实用程序: Mac 和 Windows 如果您使用的是 MAC 或 Windows,则需要安装 。 安装后,克隆。 此时,您必须创建以下环境变量来存储 unoconv python 脚本的位置: $ export UNOCONV_PATH=/path-of-unoconv-python-script 之后,您必须在用户二进制文件中安装以下脚本之一: Unoconv 笔记 请注意,您需要让 unoconv 在后台运行才能以其他用户身份使用它。 要打开端口,您必须以 sudo 身份登录: $ sudo unoconv --listener 基本用法 $ npm

js防止表单重复提交

表单提交的时候,用户有时候会重复的点击提交按钮,会导致多次提交表单,产生重复数据。 提交表单一般有三种方式 1.submit按钮 会调用onsubmit方法事件 2.当form中只有一个文本本框按回车的时候提交 会调用onsubmit事件 3.调用表单的submit方法提交 前两种是可以触发 onsubmit事件的,但是第三种不会。 解决方法: 1、 onsubmi

xiaoflsuper的博客 3675

JS表单验证(HTML+CSS+JS)详细教程

简单的JS表单验证,验证input输入框是否符合要求,css精美样式,值得新手记录学习

qq_51336762的博客 8240

用户注册表单的设计及验证

JSP程序设计 用户注册表单的设计及验证

weixin_48864837的博客 4240

Vue 表单只提交修改过的部分

文章目录1、页面效果2、实现1.修改回显2.声明,method3.提交方法时调用 1、页面效果 2、实现 1.修改回显 注意: 在this.reset() 方法中每次清空 diffData this.diffData = {}; 2.声明,method data() { return { …… 之前的数据不变 form: null, //记录设备原始数据 diffData: null, //记录修改过的值 } }, /

莫不静好 4021

workflow表单js中数据插入修改删除功能

workflow表单js中数据插入修改删除功能 var row = GetObject('treegrid1').GetSelected(); if(row==null) { ShowAlert('请先选择一个角色'); return; } var roleid = GetObject('treegrid1').GetSelected().id; var rolemc = Ge...

hsg77的专栏 642

HTML 表单的练习记录

前言: 近期的工中是负责公司网站的维护,所以就得学习Web前端的知识…时常忘记,所以记录下,也算是学习Web的一个开篇吧!废话不多说,coding … Ⅰ.简述表单相关的标签:form、fieldset、legend、table、tr、td、input、select、option、textarea 等;表单相关标签对应的部分属性: 标签 元素

追求,成长 4307

js 创建书签小工具并实现自动表单填写

1.最近学校布置网课视频,贼心不改,就找了一个自动刷题软件就处理好了,本来是一件完美的事情,可是为学计算机的同学,我是不允许有什么神奇的事情发上,必须研究研究怎么实现的2.虽然只是有了一小点了解,就先记录一下吧,主要就是创建内容为js代码的浏览器书签来实现的,直接看效果 //这就是一个简单的表单 <!DOCTYPE html> <html> <head> <meta charset="ut

会飞的徐公明 1万+
上一篇: 炼狱:window.createPopup()弹出提示tips
下一篇: 获取页面的META关键字
SmartJavaer
博客等级 码龄20年 13粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值