validar solo regular pattern only numeros letras formulario expressions html ios css html5 numpad

solo - regular expressions html5



Número de tipo de entrada html5 con patrón regex en móvil (4)

Estoy intentando obtener un patrón de expresiones regulares en el number tipo de entrada para mostrar solo números y puntos. Probé algo como esto.

<input type="number" pattern="[0-9.]*"> <input type="tel">

Ambos muestran solo números (0-9), pero no se muestran. (punto). Necesito usar el punto en el campo de entrada.

¿Es posible a través de html5? ¿O debo ir con javascript?

Nota: Esto funciona bien en Android, pero. (punto) no se muestra en iphones

Necesito mostrar el teclado móvil como este ...

¿Alguna ayuda con respecto a esto?


Desafortunadamente, no es posible lograr la funcionalidad exacta que está buscando, no es posible. Sin embargo, hay un tipo de "pirateo" disponible que dará una funcionalidad similar:

http://www.brownphp.com/2011/05/iphone-currency-input-web-apps/

Es un poco de JS que llena el decimal automáticamente cuando el usuario comienza a escribir, de esta manera: 0.01 -> 0.12 -> 1.23 -> 12.34. Así que esto puede ser usado para un efecto similar.


No todos los tipos y atributos de entrada son compatibles con todos los navegadores. En general, la mayoría de los navegadores modernos de IE10 + incluyen conceptos básicos como el correo electrónico y el número.

El navegador volverá a una entrada de texto estándar cuando sea de un tipo específico e ignorará los atributos cuando esos valores no sean compatibles.

Así que debes usar un buen patrón de expresión regular.

por ejemplo

<input type="tel" name="tel" pattern="^(?:/(/d{3}/)|/d{3})[- . ]?/d{3}[- . ]?/d{4}$" />

  • 1234567899
  • 123 456 7899
  • 123-456-7899
  • 123.456.7899

soportado

Soporte de navegador para el tipo ''tel''

  • Android (si)
  • iOS (si)
  • IE (sí)
  • Móvil (sí)
  • Opera (si)
  • Móvil (sí)
  • Opera (si)
  • Clásico (si)
  • Opera Mini (no)
  • Firefox (si)
  • Móvil (sí)
  • Chrome para Android (si)

(Fuentes: caniuse.com, DeviceAtlas, mobilehtml5.org)

Soporte de navegador para atributo de patrón

Pero el atributo de patrón es compatible con Internet Explorer 10, Firefox, Opera y Chrome. Y no se admite en Internet Explorer 9 y versiones anteriores , ni en Safari .


Si solo especifica "tipo = número", se mostrará el teclado en el iPhone como:

Y si especifica un patrón como <input type="number" pattern="/d*"/> o <input type="number" pattern="[0-9]*" /> , entonces el teclado del iPhone será como :

Aún no puede mostrar el punto (.), Actualmente no hay ningún patrón para manejar ese caso.

Así que puede optar por <input type="tel" /> que proporcionará un teclado como:

Consulte los enlaces a continuación para obtener más detalles sobre las entradas para iOS:

http://bradfrost.com/blog/mobile/better-numerical-inputs-for-mobile-forms/

http://blog.pamelafox.org/2012/05/triggering-numeric-keyboards-with-html5.html

https://about.zoosk.com/nb/engineering-blog/mobile-web-design-use-html5-to-trigger-the-appropriate-keyboard-for-form-inputs/

http://mobiforge.com/design-development/html5-mobile-web-forms-and-input-types

http://www.petefreitag.com/item/768.cfm

http://html5tutorial.info/html5-contact.php

Espero que esto te ayudará. :)

Actualizaciones para la personalización (referencia: https://.com/a/20021657/1771795 )

Puedes hacer alguna personalización usando javascript. Tomemos un ejemplo de entrada de moneda con un patrón de decimales en el que e.which leyó el CharCode ingresado y luego lo introdujo en una matriz (antes) que representa los dígitos antes de la marca decimal y otra matriz (después) para mover los valores desde (antes) la matriz más allá marca decimal

enlace completo del violín

HTML:

<input type="tel" id="number" />

JS

Variables y funciones:

// declare variables var i = 0, before = [], after = [], value = [], number = ''''; // reset all values function resetVal() { i = 0; before = []; after = []; value = []; number = ''''; $("#number").val(""); $(".amount").html(""); } // add thousand separater function addComma(num) { return num.toString().replace(//B(?=(/d{3})+(?!/d))/g, ","); }

Código principal:

// listen to keyup event $("#number").on("keyup", function (e, v) { // accept numbers only (0-9) if ((e.which >= 48) && (e.which <= 57)) { // convert CharCode into a number number = String.fromCharCode(e.which); // hide value in input $(this).val(""); // main array which holds all numbers value.push(number); // array of numbers before decimal mark before.push(value[i]); // move numbers past decimal mark if (i > 1) { after.push(value[i - 2]); before.splice(0, 1); } // final value var val_final = after.join("") + "." + before.join(""); // show value separated by comma(s) $(this).val(addComma(val_final)); // update counter i++; // for demo $(".amount").html(" " + $(this).val()); } else { // reset values resetVal(); } });

Reiniciar:

// clear arrays once clear btn is pressed $(".ui-input-text .ui-input-clear").on("click", function () { resetVal(); });

Resultado:


Tuve un escenario similar en el que necesitaba admitir tanto la coma como el punto como la marca decimal y la agrupación de dígitos [ver aquí]

P.ej

1.00 / 1,00
1,000,000.00 / 1,000,000,00

Al mismo tiempo, el escenario requería que el teclado numérico se mostrara en dispositivos móviles.

La implementación inicial combinó el tipo ''número'' con el atributo de patrón.

<input type="number" pattern="^(0*[,.]*[0-9][0-9]*([,.][0-9]+)*|[0-9]?[,.][0-9]*[1-9][0-9]*)$" required />

Sin embargo, la validación numérica falló las entradas que el patrón permitiría. Esto significaba que el campo y, por lo tanto, la forma estaban marcados como inválidos.

La solución fue cambiar el tipo a ''tel''.

<input type="tel" pattern="^(0*[,.]*[0-9][0-9]*([,.][0-9]+)*|[0-9]?[,.][0-9]*[1-9][0-9]*)$" required />

Los usuarios móviles ahora verían un teclado numérico de manera predeterminada, y la validación del patrón se usaría para validar la entrada.