Tweeter button
Facebook button

Por uma internet LIVRE! STOP SOPA & PIPA!

JavaScript – Contando e limitando caracteres em um textarea

Olá amigos, boa noite!

Ultimamente tenho recebido alguns e-mails com estas dúvidas, sobre como contar e limitar determinada quantia de caracteres em um textarea, pensando nisso desenvolví 2 funções para resolver de vez este problema!
Vamos lá!
É muito simples, primeiramente no textarea, temos o evento “onkeyup”, ou seja, ao soltarmos uma tecla, chamamos 2 funções:

1
2
3
<textarea cols="45" id="campo" rows="5" onkeyup="mostrarResultado(this.value,140,'spcontando');contarCaracteres(this.value,140,'sprestante')"></textarea><br />
<span id="spcontando" style="font-family:Georgia;">Ainda não temos nada digitado..</span><br />
<span id="sprestante" style="font-family:Georgia;"></span>

Temos também 2 elementos “span” que servirão para exibir os resultados referentes a quantidades de caracteres.
A primeira função que chamamos é a mostrarResultado(), e nela passamos como argumentos:

  • O campo onde os caracteres são digitados;
  • O valor máximo de caracteres;
  • O id do elemento onde irei escrever os resultados.
  • No exemplo abaixo, utilizo como exemplo o número máximo de 140 caracteres para serem digitados.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    function mostrarResultado(box,num_max,campospan){
    	var contagem_carac = box.length;
    	if (contagem_carac != 0){
    		document.getElementById(campospan).innerHTML = contagem_carac + " caracteres digitados";
    		if (contagem_carac == 1){
    			document.getElementById(campospan).innerHTML = contagem_carac + " caracter digitado";
    		}
    		if (contagem_carac >= num_max){
    			document.getElementById(campospan).innerHTML = "Limite de caracteres excedido!";
    		}
    	}else{
    		document.getElementById(campospan).innerHTML = "Ainda não temos nada digitado..";
    	}
    }

    A propriedade “length” calcula o tamanho do que lhe é determinado, neste caso do elemento textarea, de id “campo”.
    E o que eu faço nesta função toda?
    Se o tamanho do valor que está no campo, ou seja, a quantidade de caracteres for diferente de 0, escrever no elemento “span” o total de caracteres digitados.
    Se for igual a 1, escrever a mesma frase, só que no singular.
    E se ultrapassar 140 caracteres, escrever a mensagem “Limite de caracteres excedido!”.
    Fácil não? Esta função está 100% customizável, apenas mude os argumentos passados a função de acordo com a sua necessidade.

    Agora vamos a função que irá me mostrar quantos caracteres ainda posso digitar, e quando ultrapassar este valor não deixar.
    Para tal façanha, utilizaremos a função contarCaracteres(), e passamos como argumento:

  • Novamente o campo onde os caracteres são digitados;
  • O valor limite de caracteres;
  • O id do elemento onde irei escrever os resultados.
  • Vamos lá:

    1
    2
    3
    4
    5
    6
    7
    8
    
    function contarCaracteres(box,valor,campospan){
    	var conta = valor - box.length;
    	document.getElementById(campospan).innerHTML = "Você ainda pode digitar " + conta + " caracteres";
    	if(box.length >= valor){
    		document.getElementById(campospan).innerHTML = "Opss.. você não pode mais digitar..";
    		document.getElementById("campo").value = document.getElementById("campo").value.substr(0,valor);
    	}	
    }

    Logo na primeira linha eu faço a simples conta de subtração, pego o valor limite, passado via argumentos, e subtraio dele a quantidade digitada, em seguida escrevo o resultado, exibindo quantos ainda restam para digitar.
    E se este valor for maior ou igual ao meu valor limite, escrevo “Opss.. você não pode mais digitar..” e em seguida utilizo o método substr() para me trazer exatamente o valor limite (neste caso 140) no meu campo, fazendo com que não seja permitido digitar mais..
    Esta função está 95% customizável, apenas na linha 6 coloque o id (na propriedade getElementById()) relativo ao campo em que irá ser contado e bloqueado os caracteres.

    Ainda não entendeu o que a função substr() faz?
    Vamos lá, simples..
    Digamos que dá string “Vinicius” você queira que retorne apenas “Vini”.
    Então seria:

    var string = "Vinicius";
    var resultado = string.substr(0,4);

    Isto irá me retornar “Vini”!
    Traduzindo ao pé da letra, a função é o seguinte:
    substr(caracter inicial, quantidade que quero apartir do inicial)
    Lembrando que sempre o primeiro caracter é 0!

    Veja o exemplo do contador, e pegue o código fonte, e se surgirem dúvidas, por favor, entre em contato!
    Forte abraço e boa semana!

    Gostou do Artigo? Então leia mais:

    7 Responses to JavaScript – Contando e limitando caracteres em um textarea

    1. Show de bola cara. certamente é muito útil. abraços #soudeviano =D

    2. Pingback: Efeito simples em VDividedBox e contador de caracteres « Oswaldo Gusmão

    3. Muito bom Vini, só uma dica pra o código.

      Em vez de utilizar o evento onkeyup, utilize onkeypress. A diferença é visível quando você segura alguma tecla pressionada. Com onkeyup o evento só aconteçe quando a tecla, depois de pressionada, sobe novamente. Já com onkeypress, mesmo segurando a tecla por muito tempo, o evento é “chamado” a cada vez que uma nova letra aparece no textarea.

      Abraços!

    4. Seguinte, e se eu quero contar a quantidade de um mesmo caracter em um campo ?

      por exemplo, eu digito ‘rodrigo’ em um campo texto e ao clicar em um botao quero que seja contado quantos ‘r’ tem no campo texto. Como eu faria isso ?

    5. muito bom cara, esse certamente é o mais de implementar que já vi.
      obrigado por compartilhar os seu conhecimento.

    6. Muito bom o utto. Deus abençoe seu prazer e,m compartilhar.

    7. Este domínio parece ter uma boa quantidade de visitantes. Como você começa o tráfego para ele? Ele oferece uma rotação agradável única sobre as coisas. Eu acho que ter algo real ou substancial de falar é a coisa mais importante.

    Deixe um Comentário

    O seu endereço de email não será publicado Campos obrigatórios são marcados *

    *

    Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

    Go back to top