Как заставить функцию jQuery MaskedInput unmask () работать правильно?

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

Я пробовал несколько способов и до сих пор не увенчался успехом. В текущем проекте я использую 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 ответов


вам не нужно передавать параметр в


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

<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>

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


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

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

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

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

или

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

или

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

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

разоблачение сделано $("вход.)"размытие (функция() { $("#информация.)"html ("Unmasked value:" + $(this).mask());

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

$("#pannumber").маска("ааааа 9999 a");

разоблачение

$("#pannumber").размытие(функция() {

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