Как заставить функцию jQuery MaskedInput unmask () работать правильно? - PullRequest
13 голосов
/ 05 апреля 2010

Я пытаюсь сделать один ввод на своей странице, чтобы по умолчанию я хотел иметь маску номера телефона в США. Если конечный пользователь нажимает флажок, указывающий, что он хотел бы ввести международный номер телефона, я хочу удалить маску.

Я пробовал несколько способов, но пока безуспешно. В текущем проекте я использую jQuery, чтобы скрыть / показать совершенно другой ввод. Но я не люблю этот вариант и хотел бы более упорядоченный подход.

Я использую следующее:

jQuery 1.4.1 (скоро обновится до 1.4.2) и 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>

Приведенный выше код работает правильно, чтобы установить маску по умолчанию, но независимо от того, что я пытаюсь выполнить для события click для InternationalOfficePhone, маска не удаляется.

Любая помощь очень ценится.

Ответы [ 6 ]

23 голосов
/ 03 декабря 2010

Вам не нужно передавать параметр в функцию unmask! Используйте его без параметра, и он хорошо работает.

$("#OfficePhone").unmask();
18 голосов
/ 06 апреля 2010

Мне удалось выяснить код, чтобы заставить его работать. Ниже приведен код, который я сейчас использую.

<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>
3 голосов
/ 06 января 2015

Я бегу через ту же проблему, и что мне помогло:

    var maskedInput = $("#id").data('mask');
    if (maskedInput) {
        maskedInput.remove();
    }
2 голосов
/ 05 апреля 2010

Попробуйте использовать :checked вместо attr, я думаю, что это проблема.Я имею в виду использовать $('#InternationalOfficePhone').is(':checked') в условии if.

1 голос
/ 08 марта 2017

Удалить маску ввода:

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

или

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

или

Inputmask.remove(document.getElementById(selector));
0 голосов
/ 13 июля 2017

Я использую query.maskedinput.js Версия: 1.4.1 Я сослался https://github.com/digitalBush/jquery.maskedinput/blob/bb66bf9b1c3eddd1d2349cee103127ae08d0a877/demo/index.html

разоблачение сделано $ ("input"). blur (function () { $ ("# info"). html ("Немаскированное значение:" + $ (this) .mask ());

пример Маскировка

$ ("# pannumber"). Mask ("aaaaa 9999 a");

Сн

$ ("# номер"). Blur (function () {

var pannumber = $ (this) .mask ();

...