使用jQuery

时间:2015-06-24 02:42:14

标签: javascript jquery html

所以,我知道如何检测用户何时更改输入字段上的文本(包括键入,粘贴和其他方式)......

但是出于我的目的,我需要确切地知道文本字段中的更改内容。

例如,最初,文本字段包含:

This is a text

然后用户将其更改为:

This is my text

脚本应该将此返回给我:从8到9的文本位置已更改为my

在没有使用差异检查器算法的情况下,有更简单的方法吗?因为似乎如果我为keyup设置了一个事件,我可以检测到哪个位置被更改或删除,但是这不会检测从Ctr+V粘贴的整个文本。无论如何,我需要一种快速的方法来发送文本中的差异,以使用AJAX将其与服务器上的数据库同步,有点像Google Docs,但我觉得每次重新发送整个文本字段然后效率非常低,主要是因为用户可能正在编辑一个非常大的文本字段。

1 个答案:

答案 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>

http://kitchingroup.cheme.cmu.edu/pycse/pycse.html