Dica – Limitando a quantidade caracteres em um TextBox do tipo Multiline

Você já tentou utilizar o MaxLength do TextBox quando esse esta com TextMode igual a MultiLine?

No TextBox o TextMode é uma propriedade na qual definimos o tipo de campo será ele. Existem 3 tipos:

  • SingleLine: após renderizado o HTML, será gerado um simples input do tipo Text;
  • Password: será gerado um input do tipo Password;
  • MultiLine: diferente dos anteriores será gerado um TextArea e esse não possui a propriedade MaxLength.

Para que possamos contornar essa situação, poderemos utilizar JavaScript para limitar a quantidade de caracteres digitados no TextBox.

Essa dica pode ser utilizada também em projetos ASP.NET com VB.NET ou até mesmo aplicá-las em projetos onde será desenvolvido com puro HTML, basta nesse caso fazer algumas adaptações.

Primeiro adicionaremos ao nosso Page_Load da página uma linha onde será incluído o atributo maxlength ao nosso TextBox com o valor definido.


// Inclui o atributo maxlength
TextBox1.Attributes.Add("maxlength", "400");
// Inclui o atributo onkeyup
TextBox1.Attributes.Add("onkeyup", "return ismaxlength(this);");

Após isso, adicionaremos então nosso JavaScript a página. Essa JavaScript será o responsável em limitar o numero de caracters no TextBox.


<script type="text/javascript">
    function ismaxlength(obj)
    {
        var mlength = obj.getAttribute ? parseInt(obj.getAttribute("maxlength")) : ""
        if (obj.getAttribute && obj.value.length > mlength)
        {
            obj.value = obj.value.substring(0, mlength)
        }
    }
</script>

Vale lembrar que não é necessário utilizar esse método quando o TextMode for do tipo SingleLine ou Password pois o MaxLength funciona nativamente em ambos.

Espero que essa dica seja útil.

Abraço e até a próxima.