web-dev-qa-db-fra.com

Comment faire fonctionner la fonction unmask () jQuery MaskedInput correctement?

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.

13
Terry Nederveld

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>
18
Terry Nederveld

Vous n'avez pas besoin de passer un paramètre à la fonction unmask! Utilisez-le sans paramètre et cela fonctionne bien.

$("#OfficePhone").unmask();
22
Diego Mendes

Je rencontre le même problème, et ce qui m'a aidé, c'est:

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

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.

2
Teja Kantamneni

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));
1
EngineerCoder

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

0
user1526780