Uso Inputmask para crear una máscara para el campo de entrada del teléfono. Todo funciona bien, pero cuando necesito verificar cuántos dígitos se ingresan, el resultado siempre es 18, porque se tienen en cuenta todos los caracteres, incluidos los caracteres de la propia máscara. ¿Cómo puedo hacer una validación para poder capturar la cantidad de dígitos ingresados por el usuario sin tener en cuenta la máscara? Traté de hacer .replace() primero y luego capturar el número, pero no funciona
let inputs = document.querySelectorAll('input[type="tel"]') if (inputs) { for (let index = 0; index < inputs.length; index++) { const input = inputs[index]; let im = new Inputmask('+7 (999) 999-99-99'); input.addEventListener('focus', function () { im.mask(input); }) input.addEventListener('blur', function () { im.mask(input).remove(); }) } } <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery.inputmask/5.0.5/jquery.inputmask.min.js"></script> <form action="" method="POST"> <input type="tel" required name="" class="phone" data-validate-field="tel"> <button type="submit">submit</button> </form>Traducido con www.DeepL.com/Translator (versión gratuita)
La opción que estás buscando es autoUnmask . Establézcalo en verdadero y podrá obtener el valor sin la máscara.
De documentos:
Desenmascara automáticamente el valor cuando se recupera.
Vea el fragmento de código de trabajo a continuación:
$('input[type="tel"]').inputmask('+7 (999) 999-99-99', { autoUnmask: true }); $('button[type="submit"]').on('click', () => { let telInput = $('input[type="tel"]').val(); console.log(telInput); return false; }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.inputmask/5.0.7/jquery.inputmask.min.js"></script> <form action="" method="POST"> <input type="tel" required name="" class="phone" data-validate-field="tel"> <button type="submit">submit</button> </form>