1

これが私が今取り組んでいるものです

$("#text").on("input", function(event){

    console.log("The changes are:" + SomeDataThatIDontKnowHowToAccess);

});

これは、バックスペース/テキストの貼り付け/挿入/削除で破損する可能性があることを認識しています。これをどのように処理できるかはよくわかりません。削除/挿入/オーバーライドイベントが発生する可能性があります...独自のソリューションをロールしたくありません。

somethingユーザーは空白のテキストエリアに貼り付けます

{eventType:'insert', value:'something'}

コンソールに表示されます

4

4 に答える 4

1

フォーカスを維持できる場所に古い値を書き込みます。次に、イベントで独自のロジックを使用して、change古い値と新しい値の違いを見つけることができます

$('#text').on('focus', function () {
    //THIS LINE IS INCORRECT [what was wrong with my fiddle]... assignment is parameter *doh*
    //$(this).data('oldValue') = $(this).val();
    //THIS IS THE CORRECT LINE
    $(this).data('oldValue', $(this).val());
}).on('change', function() {
    alert('Old Value: ' + $(this).data('oldValue') + '\nNew Value: ' + $(this).val());
});

Fiddle for ya: http://jsfiddle.net/BLSully/jqbAr/1/ [固定]

于 2012-09-25T19:23:20.660 に答える
1

ここでしなければならないことが 2 つあります。まず、最後の値をキャッシュする必要があります。このようにして、新しい値が入ってくると、それを比較するものがあります。

次に、 John Resig によって提供されている文字列 diff 関数を確認 (およびダウンロード) する必要があります。差分の出力を div の html に取得します。結果は素晴らしいようです。

次に、ソリューションは次のようになります。

$("#text").data('lastvalue', $("#text").val());
$("#text").on("input", function(event){
    var diff = diffString($("#text").data('lastvalue'), $("#text").val()); 
    $('#changesdiv').html("The changes are:" + diff);
    $("#text").data('lastvalue', $("#text").val());
});​

アップデート

スクリプトのいくつかのエラーを修正し、http://jsfiddle.net/m3KAa/6/ で実行されている jsfiddle を取得しました

私見、このdiffString機能は本当に素晴らしいです。

于 2012-09-25T19:25:08.593 に答える
0

これを試して

//このイベントは、textareaがフォーカスを失ったときに使用できます

$("#text").on("change", function(event){

    console.log("The changes are:" + $(this).val() );

});

//このイベントは、ユーザーが入力を開始し、キーが表示されるときに使用できます

 $("#text").on("keyup", function(event){

        console.log("The changes are:" + $(this).val() );

    });

//

$("#text").on("input",   // Here input is not a event you are supposed to used

//代わりにchangeイベントを使用してみてください。

于 2012-09-25T19:18:46.197 に答える
0

現在の値を取得する必要がある場合は、keyup イベントを使用する必要があります

$("#text").on("keyup ", function(event){
    console.log("The changes are:" + $(this).val() );
});
于 2012-09-25T19:21:09.140 に答える