6

私はこのjQueryコードを持っています:

var char = 60;
    $("#counter").append("You have <strong>" + char + "</strong> char.");
    $("#StatusEntry").keyup(function () {
        if ($(this).val().length > char) {
            $(this).val($(this).val().substr(0, char));
        }
        var rest = char - $(this).val().length;
        $("#counter").html("You have <strong>" + rest + "</strong> char.");
        if (rest <= 10) {
            $("#counter").css("color", "#ff7777");
        }
        else {
            $("#counter").css("color", "#111111");
        }
    });

それはうまくいきます!しかし、代わりに val() がある場合、 text() は機能しません。

問題は、使用可能な char の最後で、最初からテキストを置き換え始めることです.... valの使用は完璧です。

なぜテキストでそれが必要なのですか?wysiwyg プラグインを使用しているため、テキストエリアが div に変換されます。

私は .stopPropagation を試していますが、うまくいきません.. return false で何も試していません...

あなたの助けを願っています!

4

3 に答える 3

7

NicEdit を使用する必要がある場合は、keyup / keydown イベントを新しく作成された div にバインドすることでキーストロークを制限できます (テキストエリアを置き換えません - div を追加し、テキストエリアを非表示にします)。

$("#StatusEntry").prev().keydown(function () {

新しく作成された div は常にテキストエリアの前にあるため、これは機能します。したがって、これは複数のエディターで機能します。

ただし、コメントで示したように、 contentEditable div で十分な場合があります-次の方法を使用する場合:

    var char = 60;
    $("#counter").append("You have <strong>" + char + "</strong> char.");
    $("#StatusEntry").keyup(function () {
        if ($(this).text().length > char) {
            $(this).text($(this).text().substr(1));
        }
        var rest = char - $(this).text().length;
        $("#counter").html("You have <strong>" + rest + "</strong> char.");
        if (rest <= 10) {
            $("#counter").css("color", "#ff7777");
        }
        else {
            $("#counter").css("color", "#111111");
        }
    });

デモ: http://jsfiddle.net/RjNuX/3

于 2011-11-16T22:16:43.573 に答える
0

素敵な編集 div をターゲットにする必要があります。

$(".nicEdit-main").keyup(...

複数の編集者がいる場合、このソリューションは機能しません。

于 2011-11-16T22:07:03.167 に答える
0
var len = 40;    
$(".nicEdit-main").keydown(function () {
    if($(".nicEdit-main").html().length>len){
        var string = $('.nicEdit-main').html();
        $('.nicEdit-main').html(string.substring(0, len));
        placeCaretAtEnd($('.nicEdit-main').get(0));
    }
});

ここから placeCaretAtEnd 関数

于 2014-11-05T16:11:35.857 に答える