2

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

这是示例:http: //jsfiddle.net/btqtnumL/1/

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

内容处置:表单数据;名称=“成本”

1,000

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

4

3 回答 3

2

首先,要从输入中获取未屏蔽的值,请使用 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; 名称=“掩码成本”

1,000 ------WebKitFormBoundaryMHLOLWal6cTPLuBG 内容处置:表单数据;名称=“成本”

1000

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

于 2015-06-30T14:55:39.910 回答
0

刚刚找到了另一种方法。

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

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

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

这样,我们就避免了使用FormDataapi。

于 2017-01-13T15:21:48.907 回答
0

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

获取输入掩码字段的值。

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

现在使用带有 \D 正则表达式的 .replace 方法

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

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

于 2017-12-19T22:01:47.947 回答