J'essaie d'avoir une entrée sur ma page pour laquelle j'aimerais avoir un masque de numéro de téléphone américain par défaut. Si un utilisateur final coche une case en spécifiant qu'il souhaite entrer un numéro de téléphone international, je souhaite que le masque soit supprimé.
J'ai essayé de multiples façons et j'ai échoué jusqu'à présent. Dans le projet actuel, jQuery est utilisé pour masquer/afficher une entrée complètement différente. Mais je n'aime pas cette option et souhaite une approche plus rationalisée.
J'utilise les éléments suivants:
jQuery 1.4.1 (va bientôt passer à 1.4.2) et 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>
Le code ci-dessus fonctionne correctement pour définir le masque par défaut, mais peu importe ce que j'essaie lors de l'événement click pour InternationalOfficePhone, le masque n'est pas supprimé.
Toute aide est très appréciée.
J'ai été capable de trouver le code pour le faire fonctionner. Voici le code que j'utilise maintenant.
<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>
Vous n'avez pas besoin de passer un paramètre à la fonction unmask
! Utilisez-le sans paramètre et cela fonctionne bien.
$("#OfficePhone").unmask();
Je rencontre le même problème, et ce qui m'a aidé, c'est:
var maskedInput = $("#id").data('mask');
if (maskedInput) {
maskedInput.remove();
}
Essayez d’utiliser la vérification :checked
au lieu de la vérification attr
. Je pense que c’est le problème. Je veux dire utiliser $('#InternationalOfficePhone').is(':checked')
dans la condition if.
Supprimer le masque de saisie:
$(selector).inputmask('remove');
ou
var input = document.getElementById(selector);
if (input.inputmask)
input.inputmask.remove()
ou
Inputmask.remove(document.getElementById(selector));
J'utilise query.maskedinput.js Version: 1.4.1 J'ai mentionné https://github.com/digitalBush/jquery.maskedinput/blob/bb66bf9b1c3eddd1d2349cee103127ae08d0a783d
le démasquage se fait par $ ("entrée"). blur (function () { $ ("# info"). html ("Valeur non masquée:" + $ (this) .mask ());
exemple Masquer est
$ ("# numéro de panneau"). mask ("aaaaa 9999 a");
Démasquer
$ ("# numéro" "). flou (fonction () {
var pannumber = $ (this) .mask ();