Página principal » UI / UX » Cómo crear un selector de número de teléfono simple

    Cómo crear un selector de número de teléfono simple

    Números de teléfono, Además de los nombres y correos electrónicos, son los datos de contacto más utilizados en los formularios en línea. Los campos de números de teléfono generalmente se diseñan de una manera que requiere que los usuarios escriban los números usando sus teclados. Este método con frecuencia resulta en la entrada de datos inexactos.

    A reducir los errores de entrada del usuario y mejorar la experiencia de usuario de su sitio, puede crear un GUI que permite a los usuarios ingresar rápidamente su número de teléfono, de manera similar a los que seleccionan la fecha.

    En este tutorial, verás cómo agregar un selector de número de teléfono simple a un campo de entrada. Usaremos HTML5, CSS3 y JavaScript para llegar a la GUI que puede ver y probar en la siguiente demostración. También pondremos expresiones regulares en uso para asegurarnos de que los usuarios realmente ingresen un número de teléfono válido.

    1. Crea el campo Número de teléfono

    primero, crear un campo de entrada con un icono de marcación a la derecha que abrirá la pantalla de marcación al hacer clic. El ícono de marcado parece 9 cajas negras, dispuestas 3 por 3, debe gustar lo que ve en un teléfono regular.

    Estoy usando el tel tipo de entrada para la semántica HTML5 adecuada, pero también puede usar el texto tipo de entrada si quieres.

     
    Base HTML del selector de números de teléfono
    2. Crear la pantalla de marcación

    los pantalla de marcación es una cuadrícula de números de 0 a 9 más algunos caracteres especiales. Se puede hacer con ya sea un HTML

    o JavaScript.

    Aquí, te mostraré cómo crear la tabla de la pantalla de marcación en JavaScript. Por supuesto, puede agregar la tabla directamente en el código fuente HTML si así lo prefiere..

    Primero, crea un nuevo 'mesa' elemento en el DOM usando el createElement () método. También dale el 'marcar' identificador.

     / * Crear pantalla de marcación * / var dial = document.createElement ('tabla'); dial.id = 'marcar'; 

    Agrega un para lazo para insertar las cuatro filas de la tabla de marcación con él. Luego, para cada fila, corre otro para lazo para sumar tres celdas por fila. Marcar cada celda con el 'dialDigit' clase.

     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();   

    Los dos para los bucles anteriores calculan los dígitos que entran en las celdas de la tabla de marcación, los valores de cell.textContent Propiedad - de la siguiente manera:

     (columna + 1) + (filaNum * 3) / * primera fila * / (0 + 1) + (0 * 3) = 1 (1 + 1) + (0 * 3) = 2 (2 + 1) + ( 0 * 3) = 3 / * segunda fila * / (0 + 1) + (1 * 3) = 4 (1 + 1) + (1 * 3) = 5 (2 + 1) + (1 * 3) = 6 / * etc. * / 

    La última fila es diferente, ya que consta de dos personajes especiales, - y + que se utilizan en formatos de número de teléfono para identificar códigos regionales y el dígito 0.

    Para crear la última fila en la pantalla de marcación, agregue lo siguiente Si declaración al interior para lazo.

     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();   

    los la pantalla de marcación ahora está completa, agregarlo a la #dialWrapper Contenedor HTML que creó en el Paso 1 utilizando dos métodos DOM:

    1. la querySelector () método para selecciona el contenedor
    2. la añadir Niño() método para añadir la pantalla de marcación - celebrado en el marcar variable - al contenedor
     document.querySelector ('# dialWrapper'). appendChild (dial); 
    Marcar la mesa de pantalla sin estilo
    3. Estilo de la pantalla de marcación

    Para hacerlo más atractivo., estilo de la pantalla de marcación con CSS.

    No necesariamente tienes que seguir mi estilo, pero no te olvides de añadir selección de usuario: ninguna; propiedad a #marcar envase de modo que mientras el usuario está haciendo clic en los dígitos, el texto no será seleccionado por el cursor.

     #dial ancho: 200px; altura: 200px; colapso de la frontera: colapso; text-align: center; posición: relativa; -ms-user-select: ninguno; -webkit-user-select: none; -moz-user-select: none; selección de usuario: ninguna; color: # 000; caja de sombra: 0 0 6px # 999;  .dialDigit border: 1px solid #fff; cursor: puntero; color de fondo: rgba (255,228,142, .7);  
    Marque la mesa de pantalla con estilo
    4. Mostrar la pantalla de marcación al hacer clic

    Primero, agregue el visibilidad: oculta; regla de estilo para #marcar en el CSS anterior a ocultar la pantalla de marcación por defecto. solo se mostrará cuando el usuario haga clic en el icono de marcación.

    Luego, agregue un controlador de eventos de clic al icono de marcado con JavaScript a cambiar la visibilidad de la pantalla de marcación.

    Para ello, es necesario utilizar el mencionado querySelector () y el addEventListener () metodos El último adjunta un evento de clic al icono de marcar y llama a la costumbre toggleDial () función.

    los toggleDial () función cambia la visibilidad de la pantalla de marcación de oculto a visible, y de vuelta.

     document.querySelector ('# dialIcon'). addEventListener ('click', toggleDial); function toggleDial () dial.style.visibility = dial.style.visibility === 'hidden' || dial.style.visibility === "? 'visible': 'hidden'; 
    5. Agrega la funcionalidad

    Agrega una función personalizada que ingresa dígitos en el campo del número de teléfono En el clic de las celdas de la pantalla de marcación..

    los marque el número() función anexa los dígitos uno por uno al contenido del texto propiedad del campo de entrada marcado con el #telefono no identificador.

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

    Ahora tienes un pantalla de dial de trabajo para ingresar el campo del número de teléfono.

    Para mantenerse al día con el CSS, cambie el color de fondo de los dígitos en su :flotar y :activo (cuando el usuario hace clic en él) declara.

     .dialDigit: hover background-color: rgb (255,228,142);  .dialDigit: active background-color: # FF6478;  
    6. Añadir Validación de Expresión Regular

    Agrega un validación simple de expresiones regulares para validar el número de teléfono mientras el usuario ingresa los dígitos en el campo de entrada. De acuerdo con las reglas de validación que utilizo, el número de teléfono solo puede comenzar con un dígito o + personaje, y aceptar el - personaje después.

    Puede ver la visualización de mi expresión regular en la siguiente pantalla creada con la aplicación Debuggex.

    Visualización de expresiones regulares de debuggex.com

    También puede validar el número de teléfono según el formato de número de teléfono de su país o región.

    Cree un nuevo objeto de expresión regular y guárdelo en el modelo variable. También crea una personalizada validar() Función que comprueba si el número de teléfono introducido. cumple con la expresión regular, y si es Al menos 8 caracteres de longitud.

    Cuando la entrada no se valida, validar() la función necesita Dar opinion al usuario.

    soy añadiendo un borde rojo al campo de entrada cuando la entrada no es válida, pero puede informar al usuario de otras maneras, por ejemplo, con mensajes de error.

     patrón = nuevo RegExp ("^ (\\ + \\ d 1,2)? (\\ d + \\ - * \\ d +) * $"); función validar (txt) // al menos 8 caracteres para un número de teléfono 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. Realizar la Validación.

    los validar() funciones necesita ser llamado Para realizar la validación. Llámalo desde el marque el número() función que creó en el Paso 5 para validar el valor del telefono no variable.

    Tenga en cuenta que también he añadido un validación adicional para caracteres máximos (no puede ser más de 15) usando una Si declaración.

     function dialNumber () var val = phoneNo.value + this.textContent; // caracteres máximos permitidos, 15 si (val.length> 15) devuelve falso; validar (val); phoneNo.value = val;  

    Tu selector de número de teléfono ya está listo, echa un vistazo a la demostración final a continuación.

    © Savtec
    Información útil y consejos de desarrollo web. Programación, diseño web, CSS, HTML, JAVASCRIPT. Configure y reinstale WINDOWS. Creación de sitios y aplicaciones desde cero.