将输入字段上限设置为280个字符

问题描述

我正在尝试将文本框输入字段的上限设置为280个字符,以便与Twitter共享。上限本身可以工作,但是由于某种原因,当您将文本复制并粘贴到文本框中时,告诉您剩余的字符数的计数器的行为似乎很奇怪。如果我直接键入它,它可以正常工作,但是一旦我粘贴它,如果它达到了极限,然后我删除了所有文本,字符计数将是不正确的,并且我无法弄清楚为什么?

    function twitterMessageRemaining(message) {
        const twitterMaxValue = 280;
        if (!message) message = '';
        var len = 0;
        var cleanMessage = message.replace(
            /\$AMF_(?:SHORT_)?PERMALINK\$?|https?:\/\/\S+/gi,function (foo) { len += 20; return ''; }
        );
        len += cleanMessage.length;

        // default message to 0 if text is inserted longer than
        // maxTwitterValue as that text is deleted automatically
        if (message.length > twitterMaxValue) return 0;
        else return twitterMaxValue - len;
    }

    var FieldTwitter = function (field) { FieldText.call(this,field); };
    $.extend(FieldTwitter.prototype,FieldText.prototype);
    FieldTwitter.prototype.render = function () {
        this.input = Tag('textarea',{
            name:   this.name,value:  this.default,rows:   5,cols:   40
        });

        var container = wrapLabel(this.label,this.input);

        // Twitter counter
        var counter = Tag('span',twitterMessageRemaining(this.default));
        $(counter).css({ 'margin-left': '10px' });

        $(this.input).keyup(function () {
            var len = twitterMessageRemaining(this.value);
            counter.innerHTML = len;
        });

        // if the text inputted excedes the maximum allowed length by twitter
            // delete any text overflow
            if (this.value.length > twitterMaxValue) {
                this.value = this.value.substr(0,twitterMaxValue);
                return false;
            }

        container.appendChild(counter);
        return container;
    };

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)