Mascara números e caracteres especiais

Opa!
Pessoa gostaria de pedir-se alguem tem uma função em javascript
para obrigar, o usuario ha so poder digitar numeros e caracteres especiais.

desde ja
agradeço

Mas você quer que:

1.Se quando o usuário clicar em um botão(por exemplo)…receba um aviso que existem caractéres inválidos no seu textfield
2.Literalmente não deixar ele escrever
3.dar o aviso do exemplo 1 logo quando ele digitar tal caracter?

Poste um trecho do fonte que tu tens dae ajudamos com as duvidas!!

leoviniga

eu não quero deixar o usuário digitar letras somente numeros
e caracteres especiais. Literalmente

Então você pode fazer um Array com os caractéres que serão considerados válidos (ou os inválidos,o que ficar mais fácil…) e implementar KeyListener na sua classe…
daí você adiciona o KeyListener no seu textfield e faz uma rotina pra verificar se o caractér que a pessoa digitou é válido ou não no método KeyPressed() do KeyListener…

não sei se tem um jeito mais fácil mas enfim…eu até postaria com exemplo mas tô meio com pressa :frowning: quem sabe amanhã eu veja se você ainda não tiver conseguido

té mais

leoviniga

blz!..muito obrigado vou ficar no seu aguardo.

Não estou com compilador aqui, mas seria algo do tipo:

final String _caracteresNaoAceitar = "abcdefghijklmnopqrstuvwxyz"; _jTextDigite.addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent e) { char m = e.getKeyChar(); if (_caracteresNaoAceitar.contains(String.valueOf(m))) { _jTextDigite.setText(_jTextDigite.getText().replaceAll(String.valueOf(m), "")); } } });
Assim, quando a pessoa digitar um dos caracteres daquela lista, será substituido por nada…
Só aceitará números e caracteres especiais.

Levando em consideração o desempenho, não seria interessante fazer esse tipo do validação do lado do cliente? Como foi solicitado, em javascript?

Esse Script é para máscara de números de telefones…
To achando que é isso que você quer fazer… Permitir só caracteres especiais e números…

Se não for máscara que você quer, basta dar uma ajeitada no Script…
No caso ele coloca parentese nos 2 primeiros números e um - entre o quarto e o quinto dígito…
Além de claro, não permitir letras…

Comentei para você ver, qualquer coisa só remover a linha.

Em html faz assim:

[code]

Número do seu Celular:
[/code]

Agora se for em Java, faz assim:

final String _caracteresNaoAceitar = "abcdefghijklmnopqrstuvwxyz"; _jTextFieldSeu.addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent e) { char digitado = e.getKeyChar(); if (_caracteresNaoAceitar.contains(String.valueOf(digitado))) { _jTextFieldSeu.setText(_jTextFieldSeu.getText().replaceAll(String.valueOf(digitado), "")); } } });
Agora testei com compilador e deu certo…

pedroroxd

Valeu muito obrigado mais não o que eu quero ainda
eu quero uma mascara que não deixe o usuario preencher
letras. Mais ele pode colocar numeros e caracteres especiais.

o que vc me passou é uma mascara de telefone.

mais desde ja eu le agradeço eu so estou pedindo pq eu so
sei o basico em java scritp!

gRoOve

eu sei que não é o certo!..e sei tb que tem muitas ferramentas hj que
desativam o java script o certo e fazer na linguagem que aconteça no servidor…
mais foi exigido para min fazer isso.

Não entendi o que você quer, no teu primeiro post você pede uma função em javascript, agora está falando que tem que fazer em java "/

não eu quis dizer que foi pedido para mim fazer em javascript.
Mascara que eu quero é em javascript não tem nada a ver
com o java.

Então tenta pedir ajudar neste fórum, acho que o pessoal lá pode te auxiliar melhor :slight_smile:

Valeu muito obrigado e desculpa qualquer coisa.

abraço

Estou tentando criar uma mascara de data com javascript pra minha jsp que saisse assim “11/11/2001” mas do jeito que eu criei ela sai assim “11/11/20/1”

[code]function Mask(o,f){
v_obj=o;
v_fun=f;
setTimeout(“exemask()”, 1)
}

	function exemask(){
		v_obj.value=v_fun(v_obj.value)
	}
	
	
	function Data(v){
		v=v.replace(/\D/,"")
		v=v.replace(/(\d{2})(\d)/,"$1/$2")
		v=v.replace(/(\d{2})(\d)/,"$1/$2")
		v=v.replace(/(\d{5})(\d)/,"$4/$9")
		
		return v
	}[/code]

Grato desde já.

Consegui resolver, aqui está o código:

function Data(v){
			v=v.replace(/\D/,"")
			v=v.replace(/(\d{4})(\d)/,"$1/$2")
			v=v.replace(/(\d{2})(\d)/,"$1/$2")
			v=v.replace(/(\d{4})(\d)/,"$1/$2")

       return v
                       }

Acredito que alguém vai ter essa mesma dúvida e num vai achar em lugar algum.

[quote=mk009]Estou tentando criar uma mascara de data com javascript pra minha jsp que saisse assim “11/11/2001” mas do jeito que eu criei ela sai assim “11/11/20/1”

[code]function Mask(o,f){
v_obj=o;
v_fun=f;
setTimeout(“exemask()”, 1)
}

	function exemask(){
		v_obj.value=v_fun(v_obj.value)
	}
	
	
	function Data(v){
		v=v.replace(/\D/,"")
		v=v.replace(/(\d{2})(\d)/,"$1/$2")
		v=v.replace(/(\d{2})(\d)/,"$1/$2")
		v=v.replace(/(\d{5})(\d)/,"$4/$9")
		
		return v
	}[/code]

Grato desde já.[/quote]

Trabalhar com máscaras desse jeito é complicado. Procure ver mascaras com jQuery, bem mais fácil de interpretar e fica bem mais elegante =)
Mas bem, para seu código altere desse modo:

function data(v){ v=v.replace(/\D/g,"") //Aqui para ser excluido o que não é digito v=v.replace(/(\d{2})(\d)/,"$1/$2") v=v.replace(/(\d{2})(\d)/,"$1/$2") v=v.replace(/^(\d{4})(\d)/,"$1/$2") // aqui o modo para que seja incluido uma barra '/' depois de 4 digitos. return v }

Lembre-se que para seja apresentado no layout: 09/11/2011, é preciso que o maxlength do campo seja de 10: maxlength=“10”.

Testei, funciona também. Mstanguine, tu tem alguma sugestão de livro que explique bem o uso de expressões regulares em javascript?