文本区域的最大长度在IE中不起作用

时间:2012-02-02 08:42:34

标签: html asp.net-mvc-3

我试图限制在textarea中输入的字符数,如下所示:

<div>
 @Html.TextAreaFor(x => x.StudentName, new { @maxlength = "1000" })
</div>

这在Firefox和Chrome中运行良好,但maxlength属性在IE中不起作用。我该怎么办?

4 个答案:

答案 0 :(得分:17)

{4.0}中maxlength属性不是<textarea>的标准属性。虽然它是defined in HTML5,但我猜IE没有实现它。要使其适用于所有浏览器,您可以使用javascript。这是an example

答案 1 :(得分:12)

这是我基于jQuery的解决方案。在IE9中运行良好,在IE8中有点不可思议。

// textarea event handler to add support for maxlength attribute
$(document).on('input keyup', 'textarea[maxlength]', function(e) {
    // maxlength attribute does not in IE prior to IE10
    // http://stackoverflow.com/q/4717168/740639
    var $this = $(this);
    var maxlength = $this.attr('maxlength');
    if (!!maxlength) {
        var text = $this.val();

        if (text.length > maxlength) {
            // truncate excess text (in the case of a paste)
            $this.val(text.substring(0,maxlength));
            e.preventDefault();
        }

    }

});

http://jsfiddle.net/hjPPn/

IE8的链接:http://jsfiddle.net/hjPPn/show

原生浏览器支持

此外,如果您想知道哪些浏览器支持maxlengthhttps://caniuse.com/#search=maxlength

答案 2 :(得分:3)

您也可以使用javascript,这样更容易:

<textarea  name="question" cols="100" rows="8" maxlength="500px" onKeyPress="return ( this.value.length < 1000 );"></textarea>

答案 3 :(得分:1)

使用以下Jquery - 例如,如果要将长度限制为48

$("textarea").keypress(function(e){
    var lengthF = $(this).val();

    if (lengthF.length > 48){
        e.preventDefault();
    }
});