标记表单内容改变 表单中项目较多,使用服务器端控件,想判断表单内容是否改变,或在有内容改变时标记,在用户离开页面而未保存时作提示。请问要如何实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 通过 js 跟踪,如加在 onchange 事件上通过 setInveral 轮询标记值 用JS实现.实现方法:建一个JSON对象,把控件里的值存放在JSON对象中.更改控件中的值时也同时更改JSON对象对应的值.当提交时判断控件的值是否与JSON对象的值一样即可.不一样时提示是否保存.一样时就提交数据. 跟Word一样的效果吗?只要有改动,就提示? 在onload 时记录内容,设document.body.onload = _onload然后调用_validation就可以知道用户有没有修改值了这里只处理了input type='text' 'hidden'的情形,如果还有textarea及select的请自己增加处理代码var _elements = [];var _elementsValue = [];function _onload(){ _elements = document.getElementsByTagName("input"); for( var i=0; i<_elements .length; i++){ _elementsValue[i] = elements[i].value; }}function _validation(){ bool changed = false; for( var i=0; i<_elements.length; i++){ if( elementsValues[i] != elements[i].value){ changed = true; } } return changed;} 会不会比探测onchange好一点,onchange很容易就触发了。 onchange 容易处理只要触发了 onchange 我们就认为变化了,当然如果你要很精确的控制,只有预先存储值了,然后比较了,比如 用户将 textbox 的值 从 Hello 改成 world 再改成 Hello 这种情况 onchange 还是认为变化了,但是这种精确的控制是没有必要的,因为你能保证你的 “比较”可以准确无误? 本来我们的初衷就是希望提示用户,防止丢失数据,所以只要有了 change 我就提示你要保存!onchange很容易就触发了。=======你只要标记一个 bool 值即可又没有其他额外的重量处理 能提供简单一点的代码吗?我查不到setInveral,也不知道怎么轮询。 Jinglecat老大能不能拨冗襄助?呵呵 setInveral原来是setInterval,难怪找不到,呵呵。 用一个遍历把这些控件加到一个控件数组中,用AddHandler给这些控件加上同一个Handler,在这个Handler里面改变标记值,在关闭窗口前判断,这样好不好? Excel 表 导入 Sql 表 验证问题:两个文本框至少输入一个 关于登陆人员类别提问 GridView 里面增加列的问题?在线等!谢谢大家了 又是郁闷了! 请问怎么样将结构转换为DataTable? .net 调用win2003服务器的WINRAR时,出现拒绝访问错误。 DataList中嵌套了DataGrid,那么这个DataGird中激发的事件该如何获得呢? ASP.NET中有关控件的布局问题,在线等,急 怎么样激发TabScrip的客户端事件??? 寻找合适的主机空间(aspnet2+mssqlserver2000)。 解决此关于单点登录的问题马上给100人.
通过 setInveral 轮询标记值
建一个JSON对象,把控件里的值存放在JSON对象中.更改控件中的值时也同时更改JSON对象对应的值.
当提交时判断控件的值是否与JSON对象的值一样即可.不一样时提示是否保存.一样时就提交数据.
然后调用_validation就可以知道用户有没有修改值了
这里只处理了input type='text' 'hidden'的情形,如果还有textarea
及select的请自己增加处理代码var _elements = [];
var _elementsValue = [];function _onload(){
_elements = document.getElementsByTagName("input");
for( var i=0; i<_elements .length; i++){
_elementsValue[i] = elements[i].value;
}
}function _validation(){
bool changed = false;
for( var i=0; i<_elements.length; i++){
if( elementsValues[i] != elements[i].value){
changed = true;
}
}
return changed;
}