Ir para conteúdo

POWERED BY:

Arquivado

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

Bruno Cobra

Foco em caracter específico

Recommended Posts

Boa tarde galera. Vou explicar a situação para que vocês entendam minha necessidade:

 

Tenho um input text que, na propriedade onchange, tem o seu value modificado para "__/__/____". Quando digita-se algum número, eu pego este número e substituo no primeiro "_" que houver. Isso tudo está funcionando...

 

Meu problema, no entanto, é que não sei (e não tenho nem idéia de como fazer) como fazer para colocar o foco em um caracter específico desse input. Por exemplo: no onchange, colocar o foco no primeiro caracter; ao digitar o primeiro caracter, colocar o foco no segundo, e assim por diante... Como altero o valor através de document.getElementById("id").value, o foco vai sempre para o último caracter...

 

Alguém tem idéia de como fazer?

 

Agradeço desde já... abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola amigo, acredito que você esteja tentando formatca um campo do tipo data certo?

tenho um script bacana aqui, veja se resolve seu problema.

 

 

<script language="javascript">
function mascara_data(elemento,data){	

			var mydata = ''; 

			elemento.maxLength = 10;   

			mydata = mydata + data; 		
			if (mydata.length == 2){ 
  mydata = mydata + '/'; 
				elemento.value = mydata; 
			} 
			if (mydata.length == 5){ 
				mydata = mydata + '/'; 
				elemento.value = mydata; 
			} 
			if (mydata.length == 10){ 

				verifica_data(elemento); 
			} 
		} 
function verifica_data(elemento) { 

		  dia = (elemento.value.substring(0,2)); 
		  mes = (elemento.value.substring(3,5)); 
		  ano = (elemento.value.substring(6,10)); 

 
		  situacao = ""; 


		  // verifica o dia valido para cada mes 
		  if ((dia < 01)||(dia < 01 || dia > 30) && (  mes == 04 || mes == 06 || mes == 09 || mes == 11 ) || dia > 31) { 
			  situacao = "falsa"; 
		  } 

		  // verifica se o mes e valido 
		  if (mes < 01 || mes > 12 ) { 
			  situacao = "falsa"; 
		  } 

		  // verifica se e ano bissexto 
		  if (mes == 2 && ( dia < 01 || dia > 29 || ( dia > 28 && (parseInt(ano / 4) != ano / 4)))) { 
			  situacao = "falsa"; 
		  } 
  
		  if (elemento.value == "") { 
			  situacao = "falsa";		 	   	
		  } 
	  
		  if (situacao == "falsa") { 
		  alert("Data Invalida");			   
			  elemento.focus();

	} 
</script>
o input fica da seguinte forma.

<input type="text" OnKeypress="mascara_data(this,this.value)">
De qualquer forma, caso você queira usar de forma diferente, para dividir o value usa-se a função value.substring(int,int)

 

boa sorte!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eaí cara!

 

Muito obrigado pela ajuda, mas na verdade não é isto que quero... esta função que me passaste serve apenas para ir adicionando as barras automaticamente, sendo que o que quero é ter o "formato" direto no campo... quando falei do "__/__/____" estava dando somente um exemplo, mas valeu mesmo assim...

 

Alguém sabe dar alguma ajuda?

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bruno,

Se o que você quer não é o que o Igor lhe passou, então desiste... Em javascript você não tem controle sobre o cursor e acho pouco provável existir algum hack que simule isto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eaí Klaygomes,

 

Cara, na verdade deve existir algum controle sobre o cursor... O que estou querendo, pode ser visualizado diretamente neste link do site da Claro: http://www8.directtalk.com.br/clientes/cus...=Suporte_Online (digitem algum número no campo CPF ou Telefone).

 

Outro exemplo seria nessa textarea do forum, onde escrevemos as mensagens, que conseguimos selecionar uma palavra e torná-la em negrito... alguma forma de controlar a posição do cursor em fields deve haver...

 

Alguém tem idéia??

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bruno,

Mordi minha lingua, você esta completamente certo, depois do post acima fiz uma pesquisa (no google) e descobri que é possível <_< Te peço desculpas... O que você deseja pode ser feito facilmente utilizando a jQuery e um plugin chamado maskedinput.(tutorial)

 

Sobre como controlar a posição, descobri que através de hacks usando funções de seleção de texto (setSelectionRange no firefox e TextRange no IE) você pode alcançar este efeito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara,

 

MUITO obrigado pela ajuda! Eu tinha certeza de que era possível, hehe... vou dar uma olhada na questão dos hacks, pois não estou muito a fim de utilizar o jQuery...

 

Mas obrigado mesmo pela ajuda cara! Eu ainda não havia conseguido encontrar nada em minhas pesquisas...

 

Qualquer coisa volto a postar! Abraço

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.