asp.net mvc中的Html.TextArea maxlength问题

时间:2010-06-24 12:09:36

标签: asp.net-mvc

我在我的应用程序中使用Html.TextArea,当我将其maxlength属性设置为255时。它不起作用并写入超过255个字符。如何解决这个问题

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

HTML <textarea>标记不支持“maxlength”属性。存在各种Javascript解决方案,一些用于框架,另一些用于独立。基本上有必要捕获按键事件(使用Javascript)并跟踪内容长度。通常,对用户的一些消息传递被认为是一个非常好的想法,就像Stackoverflow“评论”框一样。

答案 2 :(得分:0)

您可以使用JavaScript验证程序。例如,

    function limitText(limitField, limitCount, limitNum) {
        if (limitField.value.length > limitNum) {
            limitField.value = limitField.value.substring(0, limitNum);
        } else {
            limitCount.value = limitNum - limitField.value.length;
        }
    }
<textarea name="limitedtextarea" onKeyDown="limitText(this.form.limitedtextarea,this.form.countdown,255);" 

答案 3 :(得分:0)

这样可以防止更长的文本输入或粘贴到任何文本区域。您需要做的就是添加'maxlength'属性。

$(function () {
    //This bit will prevent the user from typing in too many characters...
    $('textarea').keypress(function (e) {
        //TODO: error handling...
        var limit = parseInt($(this).attr('maxlength'));
        var currentText = $(this).val();
        var chars = currentText.length;

        //too many charaters?
        if (chars >= limit) {
            e.preventDefault(); //cancel the key press
        }
    });

    //This bit will prevent the user pasting in long strings...
    $('textarea').bind('paste', function () {
        //TODO: error checking
        var limit = parseInt($(this).attr('maxlength'));
        var element = $(this);
        setTimeout(function () {
            var currentText = element.val();            
            var chars = currentText.length;
            if (chars > limit) {                
                //get the first 'n' characters
                var newText = currentText.substr(0, limit);
                //and replace the text.
                element.val(newText);
            }
        }, 10);
    });
});