2

これはjqueryコードです

var max_count = 200;
$(document).ready(function () {
var wordCounts = {};
$("#word_count").keyup(function () {
    var matches = this.value.match(/\b/g);
    wordCounts[this.id] = matches ? matches.length / 2 : 0;
    var finalCount = 0;
    $.each(wordCounts, function (k, v) {
        finalCount += v;
    });
    var vl = this.value;
    if (finalCount > max_count) {
        vl = vl.substring(0, vl.length - 1);
        this.value = vl;
    }
    var countleft = parseInt(max_count - finalCount);

    $('#display_count').html(finalCount);
    $('#count_left').html(countleft);
    am_cal(finalCount);
}).keyup();
});

このコードの作業は、単語数を数えて 200 までに制限することです。

テキストエリアに入力すると正常に動作し、カウントされ、200 に達するとそれ以上書き込むことはできませんが、コードをコピーして貼り付けると 200 を超え続けます。これを修正するにはどうすればよいですか?

ここにフィドルがあります

http://jsfiddle.net/aVd4H/

前もって感謝します

4

2 に答える 2

2
 var max_count = 200;
$(document).ready(function () {
    var wordCounts = {};
    $("#word_count").keyup(function () {
        CheckAndUpdateWordCount();
    });
});

ロジックを共通のメソッドに入れます。keyup イベントと afterpaste イベント内でそのメソッドを呼び出します。

function CheckAndUpdateWordCount()
{
       var Myelement = $("#word_count");
       var matches = Myelement .value.match(/\b/g);
        wordCounts[Myelement.id] = matches ? matches.length / 2 : 0;
        var finalCount = 0;
        $.each(wordCounts, function (k, v) {
            finalCount += v;
        });
        var vl = Myelement.value;
        if (finalCount > max_count) {
            vl = vl.substring(0, vl.length - 1);
          Myelement.value = vl;
        }
        var countleft = parseInt(max_count - finalCount);

        $('#display_count').html(finalCount);
        $('#count_left').html(countleft);
        am_cal(finalCount);
}


//Custom event After paste
$('HTML').live('paste', function (e) {
    e = $.extend({}, e, { type: 'afterpaste' });
    window.setTimeout(function () { $(e.target).trigger(e); }, 0);
});

上記の方法を使用します。

$("#word_count").bind('afterpaste', function (e) {

//call a method to check 
//call the method here to check the word count after pasting any content.
CheckAndUpdateWordCount();
});
于 2013-09-09T07:44:21.137 に答える