这个不难,页面生成的时候,给对应的text一个hidden保存初值
<INPUT TYPE="text" NAME="aa" value=" <%=rs("name")%> ">
<INPUT TYPE="hidden" NAME="aahidden" value=" <%=rs("name")%> "> text里用onpropertychange ="func()"来取改后的值,或别的事件
然后和hidden里的值对比
<INPUT TYPE="text" NAME="aa" value=" <%=rs("name")%> ">
<INPUT TYPE="hidden" NAME="aahidden" value=" <%=rs("name")%> "> text里用onpropertychange ="func()"来取改后的值,或别的事件
然后和hidden里的值对比
改为"CSDN论坛不太美,我不讨厌"计数应该是多少?!
如果只比对长度,那就是1!还是好好把算法想清楚吧!
"CSDN论坛太美了,我喜欢"
改成
"我喜欢,CSDN论坛太美了"
这样又算改变了几个字符呢
或者
改成
"论坛CSDN太美了,我喜欢"
这样呢
还有改了以后字符串长度不一样的时候,又怎么识别哪些算是被改的
如改成
"CSDN论坛太美了" 或"CSDN论坛,我喜欢"
或者
"CSDN论坛太美了,我喜欢得不得了" 或 "这个CSDN论坛太美了,我喜欢" "这个CSDN论坛,我喜欢的不得了"
等等,就是说当长度改变时,字符串里原字符如果位置换了时,或者如果一个词没了,但新加的两个字没在一处但恰好是这个词的时候等等,这些情况楼主都要先考虑完善之后,才可动笔写
To楼主:取input的原始value用defaultValue.
同意yixianggao:"JS技术不是难点,比较规则才是难点!"
123变为14653算改了几个?
123变为132算改了几个?
123变为132323算改了几个?
请把规则说明!
------------
4个字以外不一样的 块大小4个字123变为14653算改了几个?--可以认为是把2替换成了465
123变为132算改了几个?-- 当然是改动了2个
123变为132323算改了几个?-- 不一样的地方是323,改动了3个怎样调用事件当然清除了,不管用onkeyup,onkeydown,还是onchange都没关系,主要是怎么实现的问题
不过找到一段代码:比较代码
-----------------------------------
<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>
<!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>