0

この投稿に基づいて文字数を計算しています。
ウィンドウの読み込み時に関数を呼び出したいのですが、問題があるようです。それ以外の場合はすべて機能します。
誰でも負荷のカウントを取得するのに手を貸してくれませんか。
これが私のフィドルです

function countChar(val){
    var len = val.value.length;

    if (len >= 500) {
            val.value = val.value.substring(0, 500);
            $('#stat span').text(0);
    }else {
            $('#stat span').text(500 - len);
    }
}

$(function(){
    var inputT = $('#descTextArea').val();
    //countChar(inputT);//this is breaking the code

    $('#descTextArea').keyup(function(){
        countChar(this);
    });

});
4

3 に答える 3

5

代わりにこれを試してください

function countChar(val) {
    var len = val.value.length;
    if (len >= 500) {
        val.value = val.value.substring(0, 500);
        $('#stat span').text(0);
    } else {
        $('#stat span').text(500 - len);
    }
}
countChar($('#descTextArea').get(0));
$('#descTextArea').keyup(function() {
    countChar(this);
});​

jsFiddleの例

コードでは、要素の長さを取得しようとしている関数に文字列(値)を渡していました。代わりに、呼び出すcountChar($('#descTextArea').get(0));ことで、要素を渡し、関数が意図したとおりに入力の長さを見つけられるようにします。

于 2012-10-05T17:23:59.077 に答える
1

これは、私が書いたすばやく簡単な jQuery プラグインです。必要なことは$("#element_id").jqCounter();、入力またはテキストエリアに文字カウンターを与えることだけです。貼り付け、変更、および私が考えることができるその他すべてに応答します。

それを機能させるには、maxlength 属性を設定する必要があります<input maxlength=45 />また<textarea maxlength=45></textarea>

<script>
(function($) {
    $.fn.extend({
        jqCounter : function(givenOptions) {
            return this.each(function() {
                var $this = $(this),
                    options = $.extend({
                        divider: "/"    // The diveder character between the count and max
                    }, givenOptions);
                // 0 chars or max count not set or already setup
                if($this.attr("maxlength") <= 0 || $this.hasClass("jqCounter")) return;

                // Add the counter text after the element
                var span= $("<span style=\"font-size:10px;\">"+$this.val().length+options.divider+$this.attr("maxlength")+"</span>")
                .insertAfter($this);

                // Add a class
                $this.addClass("jqCounter")
                // React to keypresses, changes, paste, etc. and change the counter
                .on('focus blur propertychange change input paste keydown keyup keypress', function(){
                    setTimeout(function(){
                        var maxChars = $this.attr("maxlength"),
                            txtLength = $this.val().length;
                        span.text( txtLength + options.divider + maxChars );
                        },
                    1);
                });
            });
        }
    });
})(jQuery);

$(document).ready(function()
{
  // All text areas will have a content counter
  $("textarea").jqCounter();
});
</script>
于 2015-05-14T09:32:22.690 に答える
0

$(document).ready()を使用して、ウィンドウが読み込まれたときにイベントハンドラーをバインドします。

$(document).ready(function() {
    $('#descTextArea').keyup(function(){
      countChar(this);
 });
});
于 2012-10-05T17:22:35.160 に答える