Cuando escribo el último número , el primer número va dentro de text-box
(desaparece), agrega un espacio adicional.
Después de hacer clic fuera, text-box
se ve bien, lo que necesito al escribir el último carácter.
#number_text {
padding-left: 9px;
letter-spacing: 31px;
border: 0;
background-image: linear-gradient(to right, #e1e1e1 70%, rgba(255, 255, 255, 0) 0%);
background-position: left bottom;
background-size: 38px 1px;
background-repeat: repeat-x;
width: 220px;
box-sizing: border-box;
outline:none;
}
<input type="text" id="number_text" maxlength="6" pattern="\d{6}" value="1234" >
Ayúdame a salir de estos problemas. Gracias
javascript
jquery
html
css
Jignesh Panchal
fuente
fuente
1
(el primer carácter) se pierde a la izquierda de la entrada (desplazado con el desbordamiento oculto).input
controles separados y mover el cursor entre ellos a medida que se escribe / borra un personaje. De lo contrario, siempre tendrá problemas de alineación entre navegadores / tamaños de fuente / niveles de zoom, etc.Respuestas:
Agregue espacio para otro número y recorte la entrada usando
clip-path
O sin clip-path reduciendo el tamaño del fondo:
fuente
Usa este código. es un buen trabajo
fuente
else if (myLength <= maxLength) { prev=target.previousElementSibling; while (prev = prev) { if (prev == null) break; if (prev.tagName.toLowerCase() == "input") { prev.focus(); break; } } }
parseInt(target.attributes["maxlength"].value, 6);
"6" no es un valor predeterminado, es la base para convertir el intIntente agregar este script debajo del campo de entrada:
Éste fuerza su cursor de entrada al comienzo de la entrada después de ingresar el sexto carácter. También agregué un desenfoque () al campo para que el salto del cursor al principio no sobresalga.
El tiempo de espera también es necesario. Sin él, el carácter introducido se insertará al principio. Más acerca del tiempo de espera: ¿es setTimeout una buena solución para hacer funciones asíncronas con javascript?
fuente
Puede tratarlo agregando un evento blur () de js onkeyup del cuadro de entrada:
fuente
Por favor, cambie en CSS a continuación (funcionará)
a
fuente
Entonces me gusta la respuesta de Temani Afif sobre el uso de la máscara de recorte. Piensa que es genial. Quería proponer otra solución (un poco menos elegante). También utilicé Firefox para probar este problema, y al hacer clic fuera del área de texto (perder el foco) no vuelve a aparecer el primer dígito o la cadena vuelve a la normalidad en la entrada de texto allí.
Creo que el problema es el atributo css de espaciado de letras que establece:
letter-spacing: 31px;
y el hecho de que creo que esto se aplicaría al intermitente "parpadeante" que tienen la mayoría de los navegadores. Al usar Chrome, parece eliminar esto cuando pierde el foco, mientras que Firefox lo retiene incluso después de perder el foco.La primera solución fue utilizar manualmente la función blur () para hacer que la entrada pierda el foco. Esto funciona en Chrome (usando una función anónima autoejecutable):
o incluso como una función definida llamada por la entrada number_text así:
Notarás un ligero retraso en Chrome, pero llamar a esto en Firefox no resolverá el problema.
Básicamente, podemos forzar este mismo comportamiento en Firefox. Después de jugar un poco, me di cuenta de que Chrome estaba actualizando / volviendo a calcular el espacio entre letras en un desenfoque. Mi sesión de juego mostró que podrías forzar a Firefox a recalcular este valor mediante programación:
En código, se vería como la siguiente función de JavaScript:
Tendrá el mismo parpadeo en Firefox que con Chrome, y todo estará bien.
Nota : Las funciones de tiempo de espera son para darle tiempo al navegador para actualizarse y, de hecho, actualizar lo que necesitamos.
Nota : Puede elegir llamar a .blur () en la función para hacer que el cuadro de texto pierda el foco u omitirlo y seguirán en el campo de entrada sin el error con los dígitos.
Espero que esto ayude a su comprensión conceptual, así como a resolver el problema. ¡Algunas otras personas dieron buenas soluciones que evitan todo el parpadeo y funcionan tanto en Firefox como en Chrome!
fuente
Parece un problema de interfaz de usuario común que he encontrado antes.
Apuesto a que solo falla en algunas plataformas también (esta es la naturaleza de este error en particular).
En algunas plataformas, pero no en todas, se utiliza un carácter de espaciado para indicar el cursor.
En algunas plataformas, pero no en todas, este personaje no es espaciado, sino que se superpone, en el siguiente, no en el último. Por lo tanto, si no hay un siguiente carácter, se rellenará con el espacio hasta que se realice la entrada.
En ambos casos, la pantalla actuará de esta manera.
Este es un caso en el que la mejor solución es la solución más simple, que se adapta a este capricho común del sistema, no la solución que lo obliga a comportarse de la manera que usted desea, como sugirieron algunas personas. Es menos probable que presente errores y es más probable que funcione en todas las plataformas.
La solución es dar un poco de espacio libre al final de la entrada para mostrar esto.
Aumente el " ancho " a 230 o 240 y debería ser bueno.
Además, podría acomodar aún mejor los sistemas no estándar, especialmente los sistemas de accesibilidad con fuentes o atributos de tamaño alternativos, simplemente detectando el ancho al ingresar espacios de ancho completo en el área, agregando un cuarto de ancho al final, midiéndolos y luego eliminándolos ellos, o simplemente manipulándolo para sobrescribir los espacios de ancho completo a medida que el usuario escribe (o de lo contrario ingresa datos, no suponga que es un teclado o incluso algo que ingresa un carácter a la vez).
fuente
fuente