¿Cómo hacer que la función jQuery MaskedInput unmask() funcione correctamente?
-
24-09-2019 - |
Pregunta
Estoy tratando de tener una entrada en mi página que me gustaría tener en EE. UU.máscara de número de teléfono de forma predeterminada.Si un usuario final hace clic en una casilla de verificación que especifica que desea ingresar un número de teléfono internacional, quiero que se elimine la máscara.
Lo he intentado de varias maneras y hasta ahora no he tenido éxito.En el proyecto actual estoy usando jQuery para ocultar/mostrar una entrada completamente diferente.Pero no me gusta esa opción y me gustaría un enfoque más simplificado.
Estoy usando lo siguiente:
jQuery 1.4.1 (pronto se actualizará a 1.4.2) y jQuery.MaskedInput-1.2.2
<script type="text/javascript">
$(document).ready(function($) {
if ($("#InternationalOfficePhone").attr('checked') == false) {
$("#OfficePhone").mask("(999) 999-9999? x99999");
}
});
$("#InternationalOfficePhone").click(function() {
if ($("#InternationalOfficePhone").attr('checked') == true) {
//$("#OfficePhone").mask(); //doesn't work
//$("#OfficePhone").unmask(); //doesn't work
$("#OfficePhone").unmask("(999) 999-9999? x99999"); //doesn't work
} else {
$("#OfficePhone").mask("(999) 999-9999? x99999");
}
});
</script>
El código anterior funciona correctamente para configurar la máscara predeterminada, pero no importa lo que intento en el evento de clic para InternationalOfficePhone, no elimina la máscara.
Cualquier ayuda es muy apreciada.
Solución 2
yo era capaz de averiguar el código para hacerlo funcionar. A continuación se muestra el código que estoy utilizando ahora.
<script type="text/javascript">
$(function($) {
$("#OfficePhone").mask("(999) 999-9999? x99999");
$("#InternationalOfficePhone").click(function() {
var mask = "(999) 999-9999? x99999";
if ($("#InternationalOfficePhone").is(':checked')) {
$("#OfficePhone").unmask(mask);
} else {
$("#OfficePhone").mask(mask);
}
});
});
</script>
Otros consejos
No es necesario para pasar un parámetro a la función unmask
!
Utilizarlo sin un parámetro y funciona bien.
$("#OfficePhone").unmask();
Tengo el mismo problema y lo que me ayudó es:
var maskedInput = $("#id").data('mask');
if (maskedInput) {
maskedInput.remove();
}
Trate de usar el :checked
en lugar de cheque attr
, creo que ese es el problema. Yo uso $('#InternationalOfficePhone').is(':checked')
media en el caso de condiciones.
Retire la máscara de entrada:
$(selector).inputmask('remove');
o
var input = document.getElementById(selector);
if (input.inputmask)
input.inputmask.remove()
o
Inputmask.remove(document.getElementById(selector));
Estoy utilizando query.maskedinput.js Versión: 1.4.1 me he referido https://github.com/digitalBush/jquery.maskedinput/ blob / bb66bf9b1c3eddd1d2349cee103127ae08d0a877 / demo / index.html
el desenmascaramiento se realiza mediante $ ( "Entrada"). Desenfoque (function () { $ ( "# Info") html ( "valor desenmascarado:" + $ (this) .mask ());.
ejemplo El enmascaramiento es
$ ( "# pannumber") máscara ( "aaaaa 9999 a");.
desenmascaramiento
$ ( "# pannumber"). Desenfoque (function () {
var pannumber = $ (este) .mask ();