2010-04-05 15 views
10

Estoy tratando de tener una entrada en mi página que me gustaría tener una máscara de número de teléfono de EE. UU. Por defecto. 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.¿Cómo hacer que funcione jQuery MaskedInput unmask() para que funcione correctamente?

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 utilizando el siguiente:

jQuery 1.4.1 (que va a actualizar a 1.4.2 en breve) 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 adecuadamente para establecer la máscara predeterminada, pero no importa lo que intente en el evento click para InternationalOfficePhone, no quita la máscara.

Cualquier ayuda es muy apreciada.

+0

El error que obtengo está en las líneas un/mask y devuelve un "Objeto no admite esta propiedad o método" –

Respuesta

16

Pude averiguar el código para que funcione. A continuación está el código que estoy usando 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> 
+0

'.unmask()' funciona a la perfección. Todo lo que necesitaba, gracias. Pero como se señala en la respuesta de Diego, no es necesario pasar un parámetro a la función. – Chad

2

Intente utilizar el :checked en lugar del cheque attr, creo que ese es el problema. Me refiero a usar $('#InternationalOfficePhone').is(':checked') en la condición if.

+0

Eso no hizo la diferencia. Todavía recibo un error en el código $ ("# OfficePhone"). Desenmascarar(). –

+0

¿Cuál es el error que está obteniendo? Marque 'isMasked' antes de desenmascarar –

+1

Vea mi respuesta publicada. Pude finalmente resolverlo. –

20

¡No necesita pasar un parámetro a la función unmask! Úselo sin un parámetro y funciona bien.

$("#OfficePhone").unmask(); 
+0

¡Confirmado! Funciona sin parámetro Esto probablemente debería haber sido un comentario ... – Chad

+2

¿Por qué un comentario si esta es la respuesta a la pregunta? –

+0

Ya hubo una respuesta que usaba la función 'unmask', y su respuesta dice que si se basa en esa respuesta – Chad

2

corro por el mismo problema, y ​​lo que me ha ayudado es:

var maskedInput = $("#id").data('mask'); 
    if (maskedInput) { 
     maskedInput.remove(); 
    } 
1

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)); 
+0

Después de $ (selector) .mask (...) $ (selector) .inputmask no está definido. –

+1

Uncaught ReferenceError: la máscara de entrada no está definida –

+0

@ Crimean.us la biblioteca de máscara de entrada debe estar cargada. https://github.com/RobinHerbots/Inputmask – EngineerCoder

0

estoy usando 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 $ ("input") difuminar (function() {$ (. "#info"). html ("Valor sin máscara:" + $ (this) .mask());

ejemplo enmascaramiento es

$ ("# pannumber") máscara ("aaaaa 9999 un.");

Desenmascarando

$ ("# pannumber"). Difuminar (function() {

var pannumber = $ (este).máscara() ;

Cuestiones relacionadas