如何将ajax表单作为FromData提交时删除inputmask?

问题描述 投票:2回答:3

碰巧我的ajax表单有一个文件上传输入,因此我必须用FormData而不是简单的.serialize()提交它。然后我发现我的jquery.inputmask上的autoUnmask没有长效。

这是一个例子:http://jsfiddle.net/btqtnumL/1/

提交表单时,.serialize()的结果具有删除了输入掩码的值。但是FormData()的结果仍然显示了面具。

内容处理:表格数据; NAME = “成本”

1,000

在这种情况下我们如何移除面具?

javascript jquery ajax jquery-inputmask
3个回答
2
投票

首先,要从输入中获取未屏蔽的值,请使用inputmask('unmaskedvalue')(here is a reference)

一种方法是将输入元素重命名为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; NAME = “成本”

1000

这是更新的演示http://jsfiddle.net/dhirajbodicherla/btqtnumL/2/


0
投票

刚刚找到了另一种方式。

我们可以使用jquery .val()来获取没有掩码的值。

$.each($('[data-mask="integer"]'), function (idx) {
    var input = $('[data-mask="integer"]')[idx];
    var actualValue = $(input).val();
    $(input).val(actualValue);
});

然后我们可以使用$form.serialize()获取ajax的数据。

通过这种方式,我们避免使用FormData api。


0
投票

这很简单。在您的javascript中使用字符串的.replace方法,其正则表达式为\ D,这是一个匹配所有非数字的速记字符类。所以步骤是:

获取输入掩码字段的值。

 var number = $("#your_field_id").val();

现在使用.replace方法,正则表达式为\ D.

number =  number.replace(/\D/g,'');

请记住它只是一种技术,上面的代码只适用于数字。根据您的要求使用正则表达式。更多https://regexr.com

© www.soinside.com 2019 - 2024. All rights reserved.