Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Criação de Mascaras

Alguém poderia me informar onde está o erro criei as mascara mais não estão funcionando corretas. queria que a medida que o usuário fosse digitando já fosse ficando no formato correto

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Criando Mascaras com php</title>
</head>

<body>
    <?php
        function mask($val, $mask){
             $maskared = '';
            $k = 0;
            for($i = 0; $i<=strlen($mask)-1; $i++){ if($mask[$i] == '#') { if(isset($val[$k])) 
                $maskared .= $val[$k++];
                     }
            else {
                if(isset($mask[$i]))
                     $maskared .= $mask[$i];
            }
         }    
         return $maskared;
    }
?>


    <?php
        $cnpj = $_POST['cnpj'];
        $cpf = $_POST['cpf'];
        $cep = $_POST['cep'];
        $data = $_POST['data'];
    ?>
    CNPJ: <input name="cnpj" type="text" value="<?php echo mask($cnpj, '##.###.###/####-##'); ?>">
    <br><br>
    CPF: <input name="cpf" type="text" value="<?php echo mask($cpf,'###.###.###-##');
 ?>"</inpu>
    <br><br>
    CEP: <input name="cep" type="text" value="<?php echo mask($cep,'#####-###');
 ?>">
    <br><br>
    DATA: <input name="data" type="text" value="<?php echo mask($data,'##/##/####');
 ?>">
    <br><br>
</body>
</html>
2 respostas
solução!

Oi Tacio.

Então, não é possível criar uma mascara no php para que ela preencha a medida que o usuário for digitando, porque o php trabalha com requisições. Essa sua mascara funcionaria da seguinte forma:


    if (isset($_POST['enviar'])) {
        $cnpj = $_POST['cnpj'];
        $cpf = $_POST['cpf'];

        echo mask($cnpj,'##.###.###/####-##');
        echo mask($cpf,'###.###.###-##');

    }

Ou seja, ele vai verificar se um formulário foi enviado e guardar os valores numa variável, depois você aplicaria a mascara em cima delas.

Para ter o resultado que você espera é preciso usar javascript, com ele sim você vai conseguir com que a mascara seja aplicada de acordo com que o usuário vai digitando. Tem um post de um blog falando sobre mascaras em js aqui se você quiser ler, e um video dele aplicando ela aqui, a parte que ele começa a utilizar é em 18:09.

Como o Daniel falou, esse tipo de máscara não funcionará, pois o PHp roda do lado do servidor, então quando o usuário digitar o PHP não estará executando em tempo real. Utilize javascript.

Baixe o JS em http://digitalbush.com/projects/masked-input-plugin/

E utilize da seguinte forma:

Por exemplo, se tiver um campo input de telefone com DDD chamado [name=telefone]

$("#campoData").mask("(999) 9999-9999");