Tengo un campo de entrada que el usuario debe completar solo con números y un punto/coma único y solo en el siguiente formato.
Esto debería .on("input") , lo que significa que a medida que el usuario escribe, debe asegurar el formato de entrada correcto.
Un carácter incorrecto debe reemplazarse con un espacio en blanco.
Ejemplo de formato:
1.000
1.281
21212.000
21212.810
Nada como esto:
1.02.12
o
1919,201,00
Solo un punto entre los dos bloques numéricos.
Esto es lo que tengo hasta ahora:
Regex 1:
$("body").on("input", "#testId", function(){ this.value = this.value.replace(/[^0-9]/g,''); });Regex 2:
$("body").on("input", "#testId", function(){ this.value = this.value.replace(/[0-9]+\.+[0-9]{1,3}/g,''); });Regex 3:
$("body").on("input", "#testId", function(){ this.value = this.value.replace(/[0-9]+\.+[0-9]{1,3}/g,''); }); Creo que estoy haciendo algo mal con el método replace() . Desafortunadamente ninguno de ellos funciona como yo quiero. Cualquier ayuda es apreciada.
Aquí está el VIOLÍN
Debería funcionar en IE11
Puedes probar esto. asegúrese de que su tipo de entrada sea tel , lo que le permitirá tener un teclado numérico en el navegador móvil
const regex = /[^\d.]|\.(?=.*\.)/g; const subst=``; $('#testId').keyup(function(){ const str=this.value; const result = str.replace(regex, subst); this.value=result; }); . <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <html> <body> <input id="testId" type="tel" /> </body> </html>prueba este,
^[0-9]*(\.|,)?[0-9]*$esto toma los siguientes casos:
1111, .0000 123,12 12.12 12345
pero si quieres solo
111,11 11.11 12345
así que por favor usa esto
^[0-9]+(\.|,)?[0-9]+$para forzar el uso de punto/coma por favor use esto
^[0-9]+(\.|,)[0-9]+$agrega este código
$("#testId").keyup(function(){ var vals = $("#testId").val(); if(/^[0-9]*(\.|,)?[0-9]*$/g.test(vals)) $("#testId").val(vals); else vals = vals.replace(/.$/,""); $("#testId").val(vals); });y cambie el tipo de entrada a
tipo = "texto"