Pagina inicial » UI / UX » Como criar um selecionador de números de telefone simples

    Como criar um selecionador de números de telefone simples

    Números de telefone, além de nomes e e-mails, são as informações de contato mais usadas nos formulários on-line. Os campos de números de telefone geralmente são projetados de forma que os usuários precisem digitar os números usando seus teclados. Este método freqüentemente resulta em entrada de dados imprecisa.

    Para reduzir erros de entrada do usuário e melhorar a experiência do usuário do seu site, você pode criar um GUI que permite que os usuários insiram rapidamente seu número de telefone, de forma semelhante aos selecionadores de data.

    Neste tutorial, você verá como adicionar um seletor de número de telefone simples a um campo de entrada. Usaremos HTML5, CSS3 e JavaScript para acessar a GUI que você pode ver e testar na demonstração abaixo. Também usaremos expressões regulares para garantir que os usuários realmente digitem um número de telefone válido.

    1. Criar o campo de número de telefone

    Primeiro, criar um campo de entrada com um ícone de discagem à direita que abrirá a tela de discagem ao clicar. O ícone de discagem parece com 9 caixas pretas, organizadas 3 por 3, devem gostar do que você vê em um telefone comum.

    Estou usando o tel tipo de entrada para a semântica HTML5 adequada, mas você também pode usar o texto tipo de entrada se você quiser.

     
    Base HTML do selecionador de números de telefone
    2. Crie a tela de discagem

    o tela de discagem é uma grade de números de 0 a 9, mais alguns caracteres especiais. Pode ser feito com um HTML

    ou JavaScript.

    Aqui, mostrarei como criar a tabela da tela de discagem em JavaScript. Você pode, claro, adicionar a tabela diretamente no código-fonte HTML, se preferir assim.

    Primeiro, crie um novo 'mesa' elemento no DOM usando o createElement () método. Também dê a ele 'discar' identificador.

     / * Criar tela de discagem * / var dial = document.createElement ('table'); dial.id = 'discar'; 

    Adicione um para laço para inserir as quatro linhas da tabela de discagem com ele. Então, para cada linha, executar outro para laço a fim de adicionar três células por linha. Marque cada célula com o 'dialDigit' classe.

     para (var rowNum = 0; rowNum < 4; rowNum++)  var row = dial.insertRow(rowNum); for (var colNum = 0; colNum < 3; colNum++)  var cell = row.insertCell(colNum); cell.className = 'dialDigit'; cell.textContent = ((colNum + 1) + (rowNum * 3)).toString();   

    Os dois para loops acima calcular os dígitos que vão para as células da tabela de discagem - os valores do cell.textContent propriedade - da seguinte maneira:

     (colum + 1) + (rowNum * 3) / * primeira linha * / (0 + 1) + (0 * 3) = 1 (1 + 1) + (0 * 3) = 2 (2 + 1) + ( 0 * 3) = 3 / * segunda linha * / (0 + 1) + (1 * 3) = 4 (1 + 1) + (1 * 3) = 5 (2 + 1) + (1 * 3) = 6 / * etc. * / 

    A última linha é diferente, pois consiste em dois personagens especiais, - e + que são usados ​​em formatos de números de telefone para identificar códigos regionais e o dígito 0.

    Para criar a última linha na tela de discagem, adicione o seguinte E se declaração para o interior para laço.

     para (var rowNum = 0; rowNum < 4; rowNum++)  var row = dial.insertRow(rowNum); for (var colNum = 0; colNum < 3; colNum++)  /* if last row */ if (rowNum === 3)  cell = row.insertCell(colNum); cell.textContent = '-'; cell.className = 'dialDigit'; cell = row.insertCell(colNum); cell.textContent = '0'; cell.className = 'dialDigit'; cell = row.insertCell(colNum); cell.textContent = '+'; cell.className = 'dialDigit'; break;  cell = row.insertCell(colNum); cell.className = 'dialDigit'; cell.textContent = ((colNum + 1) + (rowNum * 3)).toString();   

    o tela de discagem agora está completa, adicione-o ao #dialWrapper Contêiner HTML que você criou na Etapa 1 usando dois métodos DOM:

    1. a querySelector () método para selecione o contêiner
    2. a appendChild () método para anexar a tela de discagem - realizada no discar variável - para o contêiner
     document.querySelector ('# dialWrapper'). appendChild (dial); 
    Tabela de tela de discagem sem estilo
    3. Estilize a tela de discagem

    Para torná-lo mais atraente, estilo a tela de discagem com CSS.

    Você não precisa necessariamente ficar com o meu estilo, mas não se esqueça de adicionar user-select: nenhum; propriedade para o #dial recipiente para que, enquanto o usuário estiver clicando nos dígitos, o texto não será selecionado pelo cursor.

     #dial width: 200px; altura: 200 px; border-collapse: colapso; texto-alinhar: centro; posição: relativa; -ms-user-select: nenhum; -webkit-user-select: nenhum; -moz-user-select: nenhum; user-select: nenhum; cor: # 000; box-shadow: 0 0 6px # 999;  .dialDigit border: 1px solid #fff; cursor: ponteiro; cor de fundo: rgba (255,228,142, 0,7);  
    Tabela de tela de discagem com estilo
    4. Mostrar a tela de discagem no clique

    Primeiro, adicione o visibilidade: oculto; regra de estilo para #dial no CSS acima para esconder a tela de discagem por padrão. só será mostrado quando o usuário clicar no ícone de discagem.

    Em seguida, adicione um manipulador de eventos de clique ao ícone de discagem com JavaScript para alternar a visibilidade da tela de discagem.

    Para fazer isso, você precisa usar o querySelector () e a addEventListener () métodos. O último anexa um evento de clique para o ícone de discagem e chama o toggleDial () função.

    o toggleDial () função muda a visibilidade da tela de discagem de oculto para visível e de volta.

     document.querySelector ('# dialIcon'). addEventListener ('click', toggleDial); function toggleDial () dial.style.visibility = dial.style.visibility === 'oculto' || dial.style.visibility === "? 'visible': 'hidden'; 
    5. Adicione a funcionalidade

    Adicione uma função personalizada que insere dígitos no campo de número de telefone no clique das células da tela de discagem.

    o dialNumber () função acrescenta os dígitos um por um ao textContent propriedade do campo de entrada marcado com o #telefone não identificador.

     phoneNo = document.querySelector ('# phoneNo'); função dialNumber () phoneNo.value + = this.textContent;  dialDigits = document.querySelectorAll ('. dialDigit'); para (var i = 0; i < dialDigits.length; i++)  dialDigits[i].addEventListener('click', dialNumber);  

    Agora você tem um tela de discagem de trabalho para inserir o campo de número de telefone.

    Para acompanhar o CSS, altere a cor de fundo dos dígitos em seus :flutuar e :ativo (quando o usuário clica nele) afirma.

     .dialDigit: hover background-color: rgb (255,228,142);  .dialDigit: active background-color: # FF6478;  
    6. Adicionar validação de expressão regular

    Adicione um validação de regex simples para validar o número de telefone enquanto o usuário insere os dígitos no campo de entrada. De acordo com as regras de validação que eu uso, o número de telefone só pode começar com um dígito ou o + personagem, e aceitar o - personagem depois.

    Você pode ver a visualização da minha expressão regular no screenhow abaixo criado com o aplicativo Debuggex.

    Visualização Regex de debuggex.com

    Você também pode validar o número de telefone de acordo com o formato do número de telefone do seu país ou região.

    Crie um novo objeto Expressão Regular e armazene-o no padronizar variável. Também crie um costume validar() função que verifica se o número de telefone digitado cumpre com a expressão regular, e se é pelo menos 8 caracteres.

    Quando a entrada não valida, o validar() função precisa dê retorno para o usuário.

    Eu estou adicionando uma borda vermelha para o campo de entrada quando a entrada é inválida, mas você pode informar o usuário de outras maneiras, por exemplo, com mensagens de erro.

     padrão = new RegExp ("^ (\\ + \\ d 1,2)? (\\ d + \\ - * \\ d +) * $"); função validate (txt) // pelo menos 8 caracteres para um número de telefone válido. if (! pattern.test (txt) || txt.length < 8)  phoneNo.style.border = '2px solid red'; return false;  else phoneNo.style.border = 'initial'; return true;  
    7. Execute a validação

    o validar() funções precisa ser chamado a fim de realizar a validação. Chame-o do dialNumber () função que você criou no Passo 5, a fim de validar o valor do telefone não variável.

    Note que eu também adicionei um validação adicional para caracteres máximos (não pode ser maior que 15) usando um E se declaração.

     função dialNumber () var val = phoneNo.value + this.textContent; // caracteres máximos permitidos, 15 if (val.length> 15) return false; validar (val); phoneNo.value = val;  

    Seu apanhador de números de telefone agora está pronto, confira a demonstração final abaixo.

    © Savtec
    Informações úteis e dicas de desenvolvimento da web. Programação, web design, CSS, HTML, JAVASCRIPT. Configure e reinstale o WINDOWS. Criação de sites e aplicativos a partir do zero.