Удалить литералы из маски ввода после отправки формы? - PullRequest
15 голосов
/ 22 октября 2011

этот вопрос уже задавался, но решения пока не ясны.

Я использую плагин MaskInput от Josh Bush для jQuery

Что я пытаюсь достичь:

Например: телефонный вход с маской

    $("#txtPhone").mask("(99)9999-9999");

РАВНЫЕ: (00) 9398-8373

Я хочу отправить: 0093988373

------ Возможно ли удалить маску при отправке, но сохранить значение?

Ответы [ 7 ]

24 голосов
/ 22 октября 2011

Я думаю, что вы хотите использовать unmask

$("#myForm").submit(function() {
  $("#txtPhone").unmask();
});
10 голосов
/ 13 ноября 2015

Установите для параметра removeMaskOnSubmit значение true при инициализации маски ввода

    $("#txtPhone").inputmask({removeMaskOnSubmit: true});
7 голосов
/ 16 марта 2013

На основе Плагин сайта :

$("#txtPhone").val($("#txtPhone").mask()); 
1 голос
/ 05 февраля 2019

unmask не является функцией. Это мой способ использования. autoUnmask: true

    $('#amount').inputmask('999.999.999.999', {
        numericInput: true,
        autoUnmask: true,
    });
1 голос
/ 22 октября 2011

Если вы используете завершенный обратный вызов, то вы можете просто использовать:

$(element).mask("(99)9999-9999", {
  completed : function () {
    var numbers = this.val().replace(/()-/g,'');
  }
}

В противном случае вы можете использовать:

$(element).val().replace(/()-/g,'');

Если вы хотите сделать это перед отправкой, я предлагаю захватить событие отправки, используя код, приведенный выше, и затем отправить форму.

РЕДАКТИРОВАТЬ: Алекс Питти указал на функцию unmask(), которая, я должен сказать, является гораздо лучшим решением, чем моя. Я оставлю свой ответ здесь, но я бы пошел с его решением.

0 голосов
/ 26 апреля 2017

Предполагая, что вы отправили более одного ввода, вы можете использовать:

// unmask all inputs, before savinf;
$(FormObj+" input[type=text]").each(function() {
    $(this).unmask();
});

, где FormObj - это идентификатор объекта формы, например, # form.

0 голосов
/ 19 апреля 2016

Вы также можете извлечь необработанное значение на маскированном входе, используя

$("#YourSelector").data( $.mask.dataName )();

Источник: https://github.com/digitalBush/jquery.maskedinput/issues/318

Пример
Если вы используете вход phone с такой маской:

$(".phone").mask("99 99 99 99 99")

, вы можете извлечь пользовательский ввод, используя:

$(".phone").data($.mask.dataName)() 
// will produce "0102030405" while the masks displays 01 02 03 04 05
...