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.

¿Fue útil?

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 ();

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top