表单中项目较多,使用服务器端控件,想判断表单内容是否改变,或在有内容改变时标记,在用户离开页面而未保存时作提示。请问要如何实现?

解决方案 »

  1.   

    通过 js 跟踪,如加在 onchange 事件上
    通过 setInveral 轮询标记值
      

  2.   

    用JS实现.实现方法:
    建一个JSON对象,把控件里的值存放在JSON对象中.更改控件中的值时也同时更改JSON对象对应的值.
    当提交时判断控件的值是否与JSON对象的值一样即可.不一样时提示是否保存.一样时就提交数据.
      

  3.   

    跟Word一样的效果吗?只要有改动,就提示?
      

  4.   

    在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;
    }
      

  5.   

    会不会比探测onchange好一点,onchange很容易就触发了。
      

  6.   

    onchange 容易处理只要触发了 onchange 我们就认为变化了,当然如果你要很精确的控制,只有预先存储值了,然后比较了,比如 用户将 textbox 的值 从 Hello 改成 world 再改成 Hello 这种情况 onchange 还是认为变化了,但是这种精确的控制是没有必要的,因为你能保证你的 “比较”可以准确无误? 本来我们的初衷就是希望提示用户,防止丢失数据,所以只要有了 change 我就提示你要保存!onchange很容易就触发了。=======你只要标记一个 bool 值即可又没有其他额外的重量处理
      

  7.   

    能提供简单一点的代码吗?我查不到setInveral,也不知道怎么轮询。
      

  8.   

    Jinglecat老大能不能拨冗襄助?呵呵
      

  9.   

    setInveral原来是setInterval,难怪找不到,呵呵。
      

  10.   

    用一个遍历把这些控件加到一个控件数组中,用AddHandler给这些控件加上同一个Handler,在这个Handler里面改变标记值,在关闭窗口前判断,这样好不好?