Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andredaleste

Limitar Textarea

Recommended Posts

Bom dia to executando uma tarefa no sharepoint 3.0 onde preciso limitar o numero de caracter em uma textArea , detalhe e que preciso primeiro que ele faça uma varredura na pagina para localizare so aplicar essa rotina quando encontrar um objeto textArea, depois disso sim travar o digitação no submeter do text e disparar um alert para o usuario.

eu achei um codigo que me faz quase isso mais hj naum sei por que quando eu peço para ele travar em um determinado numero de caracter ele nao respeita e trava com menos caracter que o devido.alem disso peço um alert(document.forms[0].elements.value) ele retorna <div></div> segue o codigo se alguem puder me ajudar.... fico grato .

 

<script type="text/jscript" language="JavaScript">function validateValues() {	for (var i=0, j=document.forms[0].elements.length; i<j; i++) 	{	   		myType = document.forms[0].elements[i].type;		   	if (myType == 'textarea') 		   	 	{				if (document.forms[0].elements[i].value.length > 10) 			{					  alert(document.forms[0].elements[i].value)					  return false;			}					else													   {					 return _spFormOnSubmitWrapper();	   											}		 }	}}</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

sugiro que você faça a rotina separadamente

 

tornará seu script mais dinâmico e poderá aproveitar para outros assuntos.

 

 

 

um exemplo,

 

basta colocar isso na sua pagina:

 

<script language=javascript>

function limit_textarea_search(){

qtd = 50; // quantidade maxima de caracteres

obj = document.forms[0].elements;

tam = obj.length;

for(var i=0, j=tam; i<j; i++){

tipo = obj.type;

if( tipo == 'textarea' ){

j = (i + 1);

evento = function() { limite_textarea(obj,qtd,obj[j]);}

obj.onkeypress = evento;

obj.onkeydow = evento;

obj.onkeyup = evento;

break;

}

}

}

 

 

function limit_textarea_check(obj,n,r){

if(obj.value.length > n){

obj.value = obj.value.substring(0, n);

}else{

r.value = n - obj.value.length;

}

}

window.onload = limit_textarea_search;

 

</script>

obs: após o campo textarea crie um campo qualquer que receberá o valor da quantidade restante

 

exemplo completo:

 

 

<html>

<head>

<script language=javascript>

 

 

function limit_textarea_search(){

qtd = 50; // quantidade maxima de caracteres

obj = document.forms[0].elements;

tam = obj.length;

for(var i=0, j=tam; i<j; i++){

tipo = obj.type;

if( tipo == 'textarea' ){

j = (i + 1);

evento = function() { limite_textarea(obj,qtd,obj[j]);}

obj.onkeypress = evento;

obj.onkeydow = evento;

obj.onkeyup = evento;

break;

}

}

}

 

 

function limit_textarea_check(obj,n,r){

if(obj.value.length > n){

obj.value = obj.value.substring(0, n);

}else{

r.value = n - obj.value.length;

}

}

window.onload = limit_textarea_search;

 

</script>

</head>

<body>

<form name=form1>

<br /><input type=radio value=1 name=teste> opcao 1

<br /><input type=radio value=2 name=teste> opcao 2

<br /><textarea name=xxx cols=20 rows=6></textarea>

<br />limite: <input type=text size=3 readonly name=limit>

</form>

</body>

</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, peçço uma ajuda ...Tenho um form com 2 textareas, um com limite de 50 caracteres e outro com limite de 200.Tentei adaptar o código postado aqui, mas sem sucesso ... :(Alguém pode me ajudar?Como faço para limitar a digitação dos textareas, e se possível, mostrar quantos faltam enquanto o usuário digita.Valeu mesmo!![]´sAnderson

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo tente dessa forma:

 

setEvent = function(o,e,f){	if(o.addEventListener)		o.addEventListener(e, f, true)	if(o.attachEvent)		o.attachEvent("on"+e, f)};setLimit = function(n,o){	var limit = function()	{		if(o.value.length > n)			o.value = o.value.substring(0,n);	};		setEvent(o,"keypress",limit);	setEvent(o,"keyup",limit);	setEvent(o,"blur",limit);};window.onload = function(){	setLimit(300,document.getElementById("textarea1"));	setLimit(300,document.getElementById("textarea2"));}

Na função setLimit, você passa o limite de caracteres e o textarea.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assim cara!!

 

abraçoo

 

 

 

 

[color= #009900;][url="http-~~-//december.com/html/4/element/tr.html"]<tr>[/url]
        [url="http-~~-//december.com/html/4/element/td.html"]<td[/url] class="esquerda">Conteudo</td>
        [url="http-~~-//december.com/html/4/element/td.html"]<td[/url] class="esquerda">[url="http-~~-//december.com/html/4/element/textarea.html"]<textarea[/url] name="mensagem" id="mensagem" style="font-family: Tahoma;" cols="45" rows="7" onKeyDown="textCounter(this.form.mensagem,this.form.charRestantes,200);" onKeyUp="textCounter(this.form.mensagem,this.form.charRestantes,185);"></textarea></td>
</tr>

 

 

JAVASCRIPT
<script language="JavaScript"[/color]> //Lembre-se que este JavaScript deve estar bem abaixo dos campos

            <!--

                function textCounter(campo, countcampo, maxlimit){ //Esta função que irá contar, mostrar e restringir o tamanho do campo

                    if (campo.value.length > maxlimit) { //se passar do limite não deixará entrar o caracter

                        campo.value = campo.value.substring(0, maxlimit);

                    }

                    else { //aqui, enquanto não se chegar ao limite, a cada caracter inserido ele reduzira -1 da contagem

                        countcampo.value = maxlimit - campo.value.length;

                    }

                }

                 

            //-->

                </script>

</tr>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou legal ! Com este script, não é mais possível digitar mais do que o permitido.Como posso ter uma mensagem informando quanto falta enquanto o usuário estiver digitando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha que tal esse script aki

 

 

<script type="text/javascript">function limitlength(obj, length){var maxlength=lengthif (obj.value.length>maxlength)obj.value=obj.value.substring(0, maxlength)}</script>Enter text (max length is 20 characters):<form><textarea onkeyup="return limitlength(this, 20)" style="width: 300px; height: 90px"></textarea></form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só pra deixar registrado que graças a este maltido firefox tem que se fazer estas gambiaras o codigo a baixo deveria funcionar perfeitamente como funciona no IE, mas como o firefox fica desatualizado ou errado em ralação a w3c

 

function LimitaTexto(event,prObj,prLimite)
{
	if (prObj.value.length>(prLimite))
	{
		event.charCode=null;
		event.keyCode=null;
		return false;
	}
	else
 	{
		return true;
	}
}

ou
//Codigo que deveria funcionar pela logica louco do firefox que não sei de onde ele tirou este 'which'
 function LimitaTexto(event,prObj,prLimite)
{
	if (prObj.value.length>(prLimite))
	{

			   if (event.which)
						  {
								  event.which=null;
		event.charCode=null;

						   }
						   else
						  {  
								event.charCode=null;
		event.keyCode=null;
		return false;
			 }
				 }
	else
	{
		return true;
	}
}

mas nem uma das duas funciona no FF porque ele fala que charCode e keyCode e readonly.fazer o que conviver com o ultimo caracter fliclando na tela

 

Referencias W3C

Referencia mas atual que encontrei

://www.w3.org/TR/1999/WD-DOM-Level-2-19990304/events.html

Referencia desatualizado que aparentimente o FF se basea

://www.w3.org/TR/1999/WD-DOM-Level-2-19990923/core.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.