Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Algorítmo para inserir mascara


Rafael Laurindo

Pergunta

Pessoal, to tentando programar um script não permitirá, por exemplo, a entrada de strings em campos que somente deverão aceitar números. Gostaria de fazer isso, quando o usuário tentar digitar um caracter inválido, esse caracter não fosse nem inserido, ou seja, o cursor ficasse exatamente onde está, permitindo assim a entrada de somente caracteres válidos. Eu fiz um script, só que este, apaga o último caracter inserido, mas não é isso que quero, se o usuário segurar o botão aparecerá uma porrada, e só o último é apagado.

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Rafael,

Utilizo um plugin do Jquery (jquery.meio.mask.js): http://www.meiocodigo.com/projects/meiomask/

importo o jquery.js e o jquery.meio.mask.js

dentro dos inputs que você deseja utilizar uma 'máscara', coloque no atributo ALT o tipo de máscara (no arquivo jquery.meio.mask.js tem todos os nomes de máscaras.

<input type="text" alt="integer"><!-- SOMENTE INTEIROS -->
 <input type="text" alt="decimal"><!-- DECIMAL COM 2 casas -->
 <input type="text" alt="date"> <!-- DATA -->
depois é só colocar no evento load da página (ou onde você quiser hauah):
$('input:text').setMask();

Eu gosto de utilizar esse plugin pois você pode criar as máscaras.

Link para o comentário
Compartilhar em outros sites

  • 0

Resolvido galera, depois de muito buscar. Fiz a minha versão baseada neste tópico: http://scriptbrasil.com.br/forum/index.php...mp;#entry301595

function validateInput(type, value){
    //type = mixed(text and number only) | text | lessNumber(texto e caracters especiais) | number
    if (type == 'number'){
        //valores de 0 a 9, procurar somente no último caracter da string. Deve estar delimitada por duas barras //
        var exp = new RegExp("[0-9]"); // o mesmo que exp = '/[0-9]/'
        if(exp.test(value))
            return true;
        return false
    }
}

function mask(id, format, evt){
    var el = document.getElementById(id);
    var currPos = el.value.length;
    var keyCode = evt.which

    //Padrão em máscaras
    switch(keyCode)
    {
        case 0:    //teclas de atalho
        case 8:    //backspace
        return true;
    }
    Permite que a máscara, seja inserida, se no lugar certo.
    if(String.fromCharCode(keyCode) === format.charAt(currPos))
        return true;
    
    //Mais para frente, ver como não precisar colocar o return
    //tentar fazer assim, el.onkeypress = function (){ return ...}
    
    //Cria a máscara
    //O que se digita é sempre 1 caracter, delimitado pelo x, a mascara inserida pode ser 1 ou mais
    var i = currPos
    var mascara = ''
    while(format.charAt(i) != 'x' && format.charAt(i) != ''){
        mascara += format.charAt(i)
        i++;
    }
    
    var valid = validateInput('number', String.fromCharCode(evt.which))
    //mascara    
    if (valid)
        if(mascara)
            el.value += mascara

    //Um caracter inválido, faz com que nada seja inserido na caixa de texto. Dando a idéia de travamento de cursor em um caracter inválido
    return valid;
}
Tel: <input id="txtTel" type="text" onkeypress="return mask(this.id, '(xx) xxxx-xxxx', event)" maxlength="14" title="só numeros"/>

Use-o somente com evento onkeypress. Ah, e até agora só funciona nos navs que segue padrões, baseados em Netscape. Façam as devidas alterações para funcionar em outros, e postem aí.

Abs. Até a próxima

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...