所以,我知道如何检测用户何时更改输入字段上的文本(包括键入,粘贴和其他方式)......
但是出于我的目的,我需要确切地知道文本字段中的更改内容。
例如,最初,文本字段包含:
This is a text
然后用户将其更改为:
This is my text
脚本应该将此返回给我:从8到9的文本位置已更改为my
。
在没有使用差异检查器算法的情况下,有更简单的方法吗?因为似乎如果我为keyup设置了一个事件,我可以检测到哪个位置被更改或删除,但是这不会检测从Ctr+V
粘贴的整个文本。无论如何,我需要一种快速的方法来发送文本中的差异,以使用AJAX将其与服务器上的数据库同步,有点像Google Docs,但我觉得每次重新发送整个文本字段然后效率非常低,主要是因为用户可能正在编辑一个非常大的文本字段。
答案 0 :(得分:0)
试试这个:
<script>
$(document).ready(function(){
var inival=$("#myinput").val();
$("#check").click(function(){
$("#log").empty();
var newval=$.trim($("#myinput").val());
var splitval=newval.split(' ');
for(var i=0; i<splitval.length; i++){
if(inival.indexOf(splitval[i])<0){
var charindex=newval.indexOf(splitval[i]);
$("#log").append('text position from '+charindex+' to '+(charindex+1)+'
was changed to '+splitval[i]+'<br>');
}
}
});
});
</script>
<input type="text" value="This is a text" id="myinput"><input type="button"
value="Check" id="check"><br>
<div id="log"></div>