¿Hay alguna forma coherente entre los navegadores para ocultar los nuevos cuadros de giro que algunos navegadores (como Chrome) representan para la entrada HTML del número de tipo? Estoy buscando un método CSS o JavaScript para evitar que aparezcan las flechas arriba / abajo.
<input id="test" type="number">
<input type="number" min="4" max="8" />
en Chrome y veo un campo de entrada típico con flechas hacia arriba y hacia abajo en el lateral.<input type="number" pattern="[0-9]*" inputmode="numeric">
. Más información: stackoverflow.com/a/31619311/806956<input type="text" placeholder="number (digits only)" pattern="[0-9]+" class="validate number-validation" ... >
y usar jQuery Validati o similar para manejar la validación. No he probado este enfoque, por eso es un comentario, en lugar de una respuesta.Respuestas:
Este CSS efectivamente oculta el botón giratorio para los navegadores webkit (lo he probado en Chrome 7.0.517.44 y Safari Versión 5.0.2 (6533.18.5)):
Siempre puede usar el inspector (webkit, posiblemente Firebug para Firefox) para buscar propiedades CSS coincidentes para los elementos que le interesan, buscar Pseudo elementos. Esta imagen muestra resultados para un elemento de entrada type = "number":
fuente
display: none;
como lo único dentro del selectortype=number
si tiene que ocultar estas flechas. Por ejemplo, actualmente todavía se mostrarán en Opera y comenzarán a mostrarse en Firefox, IE, etc. cuando implementen este tipo de entrada.max=
ymin=
en<input>
soluciones alternativas, comotype="text"
HTML5 no válido. La gente también menciona Opera, incluidos estos hilanderos. ¿Existe una solución para Opera similar a Safari / Chrome?input::-webkit-clear-button
para el botón XFirefox 29 actualmente agrega soporte para elementos numéricos, así que aquí hay un fragmento para ocultar los hilanderos en los navegadores webkit y moz:
fuente
Respuesta corta:
Respuesta más larga:
Para agregar a la respuesta existente ...
Firefox
En las versiones actuales de Firefox, el valor predeterminado (agente de usuario) de la
-moz-appearance
propiedad en estos elementos esnumber-input
. Cambiar eso al valortextfield
elimina efectivamente la ruleta.En algunos casos, es posible que desee que la rueda giratoria se oculte inicialmente y luego aparezca al pasar el mouse por encima / enfocar. (Actualmente, este es el comportamiento predeterminado en Chrome). Si es así, puede usar lo siguiente:
Cromo:
En las versiones actuales de Chrome, el valor predeterminado (agente de usuario) de la
-webkit-appearance
propiedad en estos elementos ya lo estextfield
. Para eliminar la ruleta, el-webkit-appearance
valor de la propiedad debe cambiarsenone
en::-webkit-outer-spin-button
/::-webkit-inner-spin-button
pseudo clases (es-webkit-appearance: inner-spin-button
por defecto).Vale la pena señalar que
margin: 0
se utiliza para eliminar el margen en versiones anteriores de Chrome.Actualmente, al escribir esto, aquí está el estilo de agente de usuario predeterminado en la pseudo clase 'inner-spin-button':
fuente
Según la guía de codificación de la experiencia del usuario de Apple para Safari móvil , puede usar lo siguiente para mostrar un teclado numérico en el navegador del iPhone:
A
pattern
de\d*
también funcionará.fuente
Intenta usar en su
input type="tel"
lugar. Aparece un teclado con números y no muestra cuadros de giro. No requiere JavaScript ni CSS ni complementos ni nada más.fuente
type=number
hace.Solo agregue este CSS para eliminar la ruleta en la entrada del número
fuente
input[type=number]{ -webkit-appearance }
debería ser suficiente para Chrome, pero, por supuesto, también debe modificar los pseudoelementos. alguna idea de por qué?He encontrado este problema con un
input[type="datetime-local"]
, que es similar a este problema.Y he encontrado una manera de superar este tipo de problemas.
Primero, debe activar la función de root de sombra de Chrome mediante "DevTools -> Configuración -> General -> Elementos -> Mostrar DOM de sombra de agente de usuario"
Luego puede ver todos los elementos DOM sombreados , por ejemplo, para
<input type="number">
, el elemento completo con DOM sombreado es:Y de acuerdo con esta información, puede redactar algunos CSS para ocultar elementos no deseados, tal como dijo @Josh.
fuente
No es lo que pediste, pero lo hago debido a un error de enfoque en WebKit con spinboxes:
Podría darle una idea para ayudar con lo que necesita.
fuente
Esta es una mejor respuesta que me gustaría sugerir al pasar el mouse y sin pasar el mouse
fuente
margin: 0
logra? Además, ¿losspin-button
pseudoelementos no parecen activarsehover
en navegadores más nuevos?Para que esto funcione en Safari, encontré que agregar! Importante para el ajuste del kit web obliga a ocultar el botón giratorio.
Todavía tengo problemas para encontrar una solución para Opera también.
fuente
En Firefox para Ubuntu, solo usando
hizo el truco para mí
Agregando
Me llevaría a
Cada vez que lo intenté. Lo mismo para el botón de giro interno.
fuente
-webkit-*
es para Chrome,-moz-*
es para mozilla firefox. Por eso no te funcionó.fuente
Tal vez cambie la entrada del número con javascript a entrada de texto cuando no desee una ruleta;
y detener al usuario que ingresa el texto;
luego haga que JavaScript lo cambie de nuevo en caso de que quiera un spinner;
funcionó bien para mis propósitos
fuente
En los navegadores WebKit y Blink y All Kind Of Browser, use el siguiente CSS:
fuente
webkit
? Al responder una pregunta de nueve años con catorce respuestas existentes, es importante agregar una explicación de cómo y por qué funciona su respuesta y mencionar qué nuevo aspecto de la pregunta responde.Necesitaba esto para trabajar
La línea extra de
appearance: none
fue clave para mí.fuente
Encontré una solución súper simple usando
Esto es compatible con la mayoría de los navegadores: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode
fuente