文本区域值计数长度jquery

Posted

技术标签:

【中文标题】文本区域值计数长度jquery【英文标题】:Textarea value count length jquery 【发布时间】:2015-02-01 05:34:16 【问题描述】:

我认为我遗漏了一些东西或有一个愚蠢的错误。我试图让计数器用于 textarea 并且由于某种原因 textarea 值的长度始终为零。这是我对 View 的相同代码:

@html.TextAreaFor(x => x.Description, new  @maxlength = "4000", @onkeyup = "countChar(this)" )
@Html.Label("", " ", new  @id = "lblcount" )

我对应的javascript是:

function countChar(val) 
    var max = 4000;
    var len = $("#txtDescription").val().length;
    if (len >= max) 
        $('#lblcount').text(' you have reached the limit');
        $('#lblcount').attr("class", "lblCountRed");
     else 
        var ch = max - len;
        $('#lblcount').text(ch + ' characters left');
        $('#lblcount').attr("class", "lblCountGreen");
    
;

上面的代码总是将标签文本设置为“剩余 4000 个字符”,而不管我在 textarea 中输入的字符数。

【问题讨论】:

在哪里说WFRequest_ReqName 是textarea 的ID?你也可以发布渲染的html吗? 该元素的id 将匹配模型的属性名称,在本例中为Description,而不是txtDescription 【参考方案1】:

我真的建议您使用内联 JavaScript,但函数应该是这样的:

function countChar( elem ) 
    var max = 4000,
        len = elem.value.length,
        lbl = $('#lblcount');
    if(len >= max) 
        lbl.text(' you have reached the limit')
        .addClass("lblCountRed").removeClass('lblCountGreen');
     else 
        var ch = max - len;
        lbl.text(ch + ' characters left')
        .addClass("lblCountGreen").removeClass('lblCountRed');
    

如果您想在不使用内联 JavaScript 的情况下完成此操作,您可以:

删除@onkeyup = "countChar(this)" 然后使用以下代码:

-

$(document).ready(function() 
    $("#Description").on('keyup', function() 
        var max = 4000,
            len = this.value.length,
            lbl = $('#lblcount');
        if(len >= max) 
            lbl.text(' you have reached the limit')
            .addClass("lblCountRed").removeClass('lblCountGreen');
         else 
            var ch = max - len;
            lbl.text(ch + ' characters left')
            .addClass("lblCountGreen").removeClass('lblCountRed');
        
    );
);

【讨论】:

len = $.trim(elem.value).length; --> 这行得通 :) 非常感谢 太棒了!很高兴您发现这很有帮助。我删除了$.trim( ),因为在用户键入时,空格可能是用户文本的一部分。 var x=1, y=3, z=50; 是语法正确的代码;相当于var x=1; var y=3; var z=50;【参考方案2】:

您使用了错误的选择器。您的 textarea ID 是 Description,但您使用了 txtDescription。你应该使用

var len = $("#Description").val().length;

而不是

var len = $("#txtDescription").val().length;

【讨论】:

以上是关于文本区域值计数长度jquery的主要内容,如果未能解决你的问题,请参考以下文章

自动清除和重新填充文本区域值

用于增加或减少文本区域值的数字键盘按钮

Firefox缓存文本区域值?

淘汰文本区域值绑定显示换行符的 ASCII 字符?

文本区域值更改时双击 ipad 设备

无法将文本区域值传递给我的表单