it-swarm.com.ru

Как заставить функцию 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, маска не удаляется.

Буду признателен за любую оказанную помощь.

13
Terry Nederveld

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

<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

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

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

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

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

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

2
Teja Kantamneni

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

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

или же

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

или же

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

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

снятие маски выполняется с помощью $ ("input"). blur (function () {$ ("# info"). html ("Unmasked value:" + $ (this) .mask ());

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

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

Разоблачительный

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

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

0
user1526780