Как удалить маску ввода, когда форма ajax отправляется как FromData?
Бывает, что у моей формы ajax есть вход для загрузки файла, и поэтому я должен отправить его с FormData
вместо простого .serialize()
, Затем я нашел autoUnmask
на моем jquery.inputmask уже давно не эффективно.
Вот пример: http://jsfiddle.net/btqtnumL/1/
Когда форма отправлена, результат из .serialize()
имеет значение с удаленной маской ввода. Но результат от FormData()
по-прежнему показывает маску.
Content-Disposition: форма-данные; имя = "стоимость"
1000
Как мы можем снять маску в этом случае?
4 ответа
Во-первых, чтобы получить немаскированное значение из ввода, используйте inputmask ('unmaskedvalue') (здесь ссылка).
Один из способов - переименовать элемент ввода во что-то вроде masked-cost, а затем использовать метод.append().
<input name="masked-cost" .... />
В JavaScript вы можете сделать что-то вроде этого
var formData = new FormData($form[0]);
formData.append('cost', $('input[name="masked-cost"]').inputmask('unmaskedvalue'));
На стороне сервера вы можете получить переменную стоимости с немаскированным значением.
FormData будет выглядеть примерно так
------WebKitFormBoundaryMHLOLWal6cTPLuBG Content-Disposition: form-data; Name="замаскированная стоимость"
1 000 ------WebKitFormBoundaryMHLOLWal6cTPLuBG Content-Disposition: form-data; имя = "стоимость"
1000
Вот обновленная демоверсия http://jsfiddle.net/dhirajbodicherla/btqtnumL/2/
Просто удалите маску ввода перед FormData.
$('#form_id :input').inputmask('remove');
data = new FormData($('#form_id'));
Просто нашел альтернативный способ.
Мы можем использовать JQuery .val()
получить значение без его маски.
$.each($('[data-mask="integer"]'), function (idx) {
var input = $('[data-mask="integer"]')[idx];
var actualValue = $(input).val();
$(input).val(actualValue);
});
Тогда мы можем получить данные для AJAX с $form.serialize()
,
Таким образом, мы избегаем использования FormData
апи.
Это просто. В вашем javascript Используйте строковый метод.replace с регулярным выражением \D, который является сокращенным классом символов, который соответствует всем не цифрам. Итак, шаги:
получить значение поля маски ввода.
var number = $("#your_field_id").val();
Теперь используйте метод.replace с регулярным выражением \ D
number = number.replace(/\D/g,'');
Имейте в виду, что это просто техника, а вышеприведенные коды работают только для числа. По вашему требованию используйте регулярные выражения. больше https://regexr.com/