这个不难,页面生成的时候,给对应的text一个hidden保存初值
<INPUT   TYPE="text"   NAME="aa"   value=" <%=rs("name")%> "> 
<INPUT   TYPE="hidden"   NAME="aahidden"   value=" <%=rs("name")%> "> text里用onpropertychange ="func()"来取改后的值,或别的事件
然后和hidden里的值对比

解决方案 »

  1.   

    JS技术不是难点,比较规则才是难点!value="CSDN论坛太美了,我喜欢"
    改为"CSDN论坛不太美,我不讨厌"计数应该是多少?!
    如果只比对长度,那就是1!还是好好把算法想清楚吧!
      

  2.   

    给你个思路,你看看行不,在调用onkeypress的时候,能不能调用onchange事件,或者javascript的onchange事件的实现方法
      

  3.   

    楼主还是把比较的规则说清楚了再说吧比如把
    "CSDN论坛太美了,我喜欢" 
    改成
    "我喜欢,CSDN论坛太美了" 
    这样又算改变了几个字符呢
    或者
    改成
    "论坛CSDN太美了,我喜欢" 
    这样呢
    还有改了以后字符串长度不一样的时候,又怎么识别哪些算是被改的
    如改成
    "CSDN论坛太美了" 或"CSDN论坛,我喜欢" 
    或者
     "CSDN论坛太美了,我喜欢得不得了"  或 "这个CSDN论坛太美了,我喜欢"  "这个CSDN论坛,我喜欢的不得了" 
    等等,就是说当长度改变时,字符串里原字符如果位置换了时,或者如果一个词没了,但新加的两个字没在一处但恰好是这个词的时候等等,这些情况楼主都要先考虑完善之后,才可动笔写
      

  4.   

    路过
    To楼主:取input的原始value用defaultValue.
    同意yixianggao:"JS技术不是难点,比较规则才是难点!"
      

  5.   

    引用“yixianggao ”的话JS技术不是难点,比较规则才是难点! 回复10楼
    123变为14653算改了几个? 
    123变为132算改了几个? 
    123变为132323算改了几个? 
    请把规则说明! 
    ------------
    4个字以外不一样的 块大小4个字123变为14653算改了几个?--可以认为是把2替换成了465
    123变为132算改了几个?-- 当然是改动了2个
    123变为132323算改了几个?-- 不一样的地方是323,改动了3个怎样调用事件当然清除了,不管用onkeyup,onkeydown,还是onchange都没关系,主要是怎么实现的问题
      

  6.   

    还是等待,有米人能解决?
    不过找到一段代码:比较代码
    -----------------------------------
    <div id="txt1">汉语aaaabcd331234</div>
    <div id="txt2">中文abc1234</div><div id="txt3"></div>
    <div id="txt4"></div>
    不相同:<span id="txt5"></span> 处<script type="text/javascript">
    <!--
        function compare_str(str1,str2){
            var res1 = "";
            var res2 = "";        while(str1.length && str2.length){
                var arr = find_pos(str1,str2);
                
                if (arr && arr.length)
                {
                    if (arr[0])
                    {
                        res2 +=("<font color='green'>" + str2.substr(0,arr[0]) + "</font>");
                        str2 = str2.substr(arr[0]);
                    }
                    res1 +=(str1.substr(0,arr[1]));
                    res2 +=(str2.substr(0,arr[1]));                         str1 = str1.substr(arr[1]);
                    str2 = str2.substr(arr[1]);            }else{
                    arr = find_max_pos(str1,str2); 
                    tmp = find_match_pos(str1,str2);
    document.getElementById("txt5").innerHTML = arr.toString(); 
                    if (tmp.length)
                    {               
                        if (arr[0]>tmp[0] && arr[1]>tmp[1])
                        {
                            arr = tmp;
                        }
                    }
     
                    if (arr!=undefined && arr.length)
                    {               
                        res1 +=("<font color='red'>" + str1.substr(0,arr[0]) + "</font>");
                        res2 +=("<font color='red'>" + str2.substr(0,arr[1]) + "</font>");
                        res1 +=(str1.substr(arr[0],arr[2]));
                        res2 +=(str2.substr(arr[1],arr[2]));                    str1 = str1.substr(arr[0]+arr[2]);
                        str2 = str2.substr(arr[1]+arr[2]);
                    }else{
                        res1 +=("<font color='blue'>" + str1 + "</font>");
                        res2 +=("<font color='green'>" + str2 + "</font>");
                        str1 = '';
                        str2 = '';
                    }
                    
                }
            }
            if (str1.length)
            {
                res1 +=("<font color='blue'>" + str1 + "</font>");
            }
            if (str2.length)
            {
                res2 +=("<font color='green'>" + str2 + "</font>");
            }
            
                        document.getElementById("txt3").innerHTML = (res1); 
            document.getElementById("txt4").innerHTML = (res2); 
        }
        
        //从串2查找对串1前N个字符的最大匹配
        function find_pos(str1,str2){
            var len = 1, pos = 0;
            var ret;    
            
            while (pos>=0){
                var str = str1.substr(0,len);
                pos = str2.indexOf(str);
                if (pos!=-1)
                {
                    ret = [];
                    ret.push(pos,len);
                    len++;
                    if (len>str1.length){
                        break;
                    }
                    
                }else{
                    break;
                }
            }        return ret;
        }
        
        //从串2查找对串1从第N个字符开始前N个字符的首次匹配
        function find_match_pos(str1,str2,arr){
            var len =1 , pos1 = 0, pos2 = 0, _pos2;
            var ffind = false;
            var ret = [];
            
            if (arr!=undefined)
            {
                pos1 = arr[0];pos2 = arr[1];
            }
            while((pos1+len)<str1.length){
                var str = str1.substr(pos1,len);
                _pos2 = str2.indexOf(str);
                if (_pos2!=-1)
                {
                    ffind = true;len++;pos2 = _pos2;
                }else{
                    if (ffind)
                    {
                        len--;break;
                    }else{
                        pos1 += len;len = 1;
                    }
                }           
            }        if (ffind)
            {
                ret.push(pos1,pos2,len);
            }else{
                ret = [];
            }
            
            return ret;
        }
        
        //查找下一个最适匹配
        function find_next_pos(str1,str2){    }
        
        //查找两个字串的字符数目最大匹配
        function find_max_pos(str1,str2){
            var ret,pos1,pos2,arr=null;
            var res, max = 0;
            do
            {
                ret = find_match_pos(str1,str2,arr);
                if (ret.length)
                {
                    if (ret[2]>max)
                    {
                        res = ret;
                        max = ret[2];
                    }
                    
                    arr = new Array(ret[0]+1,ret[1]);
                     
                }
            }
            while (ret.length);        return res;
        }    function test(){
            var str1 = document.getElementById("txt1").innerText;
            var str2 = document.getElementById("txt2").innerText;        compare_str(str1,str2);
        }
            test();
    //-->
    </script>
    --------------------------
    下面这个是我根据别人修改的,但是还是不理想<body> 
    <input name="text1" value="无忧脚本,我爱你!"  id="text1" onpropertychange="ff(this);"/>
    <br />
    原字符串:<span id="resText" style="color:#006600"></span></BR>
    修改后的字符串:<span id="change_text" style="color:#FF0000"></span></BR>
    修改字符个数为:<span id="res" style="color:#0000FF;font-weight: bold"></span> 
    <script>
    var  str=document.getElementById("text1").value;
    document.getElementById("resText").innerHTML=str;
    var result="结果如下:";
    var reg="";
    for(var i=0;i<str.length;i++){
    var tmp="("+str.substr(i,1)+")*";
    reg=reg+tmp;
    }
    var count=0;
    reg=new RegExp(reg);
    function ff(obj)
    {
    var str2=obj.value;
    if(str2.length-str.length>0)  //超过原来str长度,就取出超出的字符个数
    {
    count=Math.abs(str2.length-str.length);
    }
    str2.replace(reg,tt);//对原字符进行正则匹配
    document.getElementById("change_text").innerHTML=str2;
    //result=result+"原字符串"+str+"<Br>";
    //result=result+"修改后的字符串"+str2+"<Br>";
    //result=result+"修改字符串个数为<font size=2 color=red>"+count+"</font><br>";
    document.getElementById("res").innerHTML=count;
    //alert(count);
    count=0;
    }
    function tt(){
    for(var i=1;i<arguments.length;i++){
    if(typeof arguments[i]=="undefined"){
    count++;
    }
    }
    }
    </script> 
    </body>
      

  7.   

    终于搞定了,大家观赏先
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>test Page</title>
    </head>
    <body>
    <input type="text" id="test1" value="一二三四五,上山打老虎" onkeyup="testscript()"/>
    <div id="mesBox"></div>
    <script type="text/javascript">
    var testArr1=new Array()
    var testArr2=new Array()
    testArr1=document.getElementById("test1").value.split("")
    function testscript()
    {
       var getCounts=0
       var chaIndex=-1
       var getByOrder 
       var exa=0
       testArr2=document.getElementById("test1").value.split("")
       for (i=0;i<(testArr1.length>testArr2.length?testArr1.length:testArr2.length);i++)
      {
         if (testArr1[i]!=testArr2[i])
         {
            getCounts++//1.纪录绝对不吻合的字符数
    if (testArr1.length>testArr2.length)
    {
    if (check(testArr1[i])) getCounts++;
    }else
    {
    if (check(testArr2[i])) getCounts++;
    }
         }
         else
         {
            exa++//2.纪录绝对吻合的字符数
    if (testArr1.length>testArr2.length)
    {
    if (check(testArr1[i])) exa++;
    }else
    {
    if (check(testArr2[i])) exa++;
    }
         }
      } 
      for (i=0;i<testArr1.length;i++)
      {
         getByOrder=document.getElementById("test1").value.indexOf(testArr1[i],chaIndex)
         if (getByOrder!=-1)//3.剔除按顺序吻合的字符数
         {
             chaIndex=getByOrder
             getCounts--
    if (testArr1.length>testArr2.length)
    {
    if (check(testArr1[i])) getCounts--;
    }else
    {
    if (check(testArr2[i])) getCounts--;
    }
         }
      }
      getCounts+=exa//4.因为绝对吻合是按顺序吻合的充分条件,所以在步骤3中会被重复剔除,在此加回来.
      document.getElementById("mesBox").innerHTML=getCounts
    }
    function check(s){
    var ret=true; 
    for(var i=0;i<s.length;i++)
    { ret=ret &&(s.charCodeAt(i)>=10000); } 
    return ret;
    }
    </script>
    </body>
    </html>