2010-04-05 15 views
10

Sto cercando di avere un input sulla mia pagina che mi piacerebbe avere una maschera del numero di telefono degli Stati Uniti per impostazione predefinita. Se un utente finale fa clic su una casella di controllo che specifica di voler inserire un numero di telefono internazionale, desidero rimuovere la maschera.Come ottenere la funzione jQuery MaskedInput unmask() per funzionare correttamente?

Ho provato diversi modi e finora non ho avuto successo. Nel progetto corrente sto usando jQuery per nascondere/mostrare un input completamente diverso. Ma non mi piace questa opzione e vorrei un approccio più snello.

Sto usando il seguente:

jQuery 1.4.1 (che va per l'aggiornamento a 1.4.2 presto) e 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> 

Il codice precedente funziona correttamente per impostare la maschera predefinita, ma non importa cosa provo sull'evento click per InternationalOfficePhone, non rimuove la maschera.

Qualsiasi aiuto è molto apprezzato.

+0

L'errore che sto ottenendo è sulle linee un/mask e restituisce un "Oggetto non supporta questa proprietà o metodo" –

risposta

16

Sono riuscito a capire il codice per farlo funzionare. Di seguito è riportato il codice che sto usando ora.

<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()' funziona perfettamente. Tutto ciò di cui avevo bisogno, grazie. Ma come sottolineato nella risposta di Diego, non è necessario passare un parametro alla funzione. – Chad

2

Provare a utilizzare il controllo :checked anziché attr, penso che sia questo il problema. Voglio dire usare $('#InternationalOfficePhone').is(':checked') nella condizione if.

+0

Questo non ha fatto la differenza. Ricevo ancora un errore sul codice $ ("# OfficePhone"). Unmask(). –

+0

Qual è l'errore che stai ottenendo? Controlla 'isMasked' prima di fare lo smascheramento –

+1

Vedi la mia risposta postata. Sono stato in grado di capirlo finalmente. –

20

Non è necessario passare un parametro alla funzione unmask! Usalo senza un parametro e funziona bene.

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

Confermato! Funziona senza parametri. Probabilmente questo dovrebbe essere stato un commento ... – Chad

+2

Perché un commento se questa è la risposta alla domanda? –

+0

C'era già una risposta che usava la funzione 'smaschera', e la tua risposta si legge come se si basasse su quella risposta – Chad

2

corro attraverso lo stesso problema, e quello che mi ha aiutato è:

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

Rimuovere l'InputMask:

$(selector).inputmask('remove'); 

o

var input = document.getElementById(selector); 
if (input.inputmask) 
    input.inputmask.remove() 

o

Inputmask.remove(document.getElementById(selector)); 
+0

Dopo $ (selettore) .mask (...) $ (selettore) .inputmask non è definito. –

+1

Uncaught ReferenceError: Maschera di input non definita –

+0

@ La libreria di inputmask Crimean.us deve essere caricata. https://github.com/RobinHerbots/Inputmask – EngineerCoder

0

Sto usando query.maskedinput.js Versione: 1.4.1 ho fatto riferimento https://github.com/digitalBush/jquery.maskedinput/blob/bb66bf9b1c3eddd1d2349cee103127ae08d0a877/demo/index.html

lo smascheramento è fatto da $ ("ingresso") sfocatura (function() {$ (. "#info"). html ("Valore non mascherato:" + $ (this) .mask());

esempio Masking è

$ ("# pannumber") maschera ("aaaaa 9999 una.");

Smascherare

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

var pannumber = $ (questo).maschera();

Problemi correlati