当 ajax 表单作为 FromData 提交时如何删除 inputmask?
How to remove inputmask when an ajax form is submitted as FromData?
碰巧我的 ajax 表单有一个文件上传输入,因此我必须使用 FormData
而不是简单的 .serialize()
来提交它。然后我发现我的jquery.inputmask上的autoUnmask
已经失效了
示例如下:
http://jsfiddle.net/btqtnumL/1/
提交表单时,.serialize()
的结果中有一个已删除输入掩码的值。但是 FormData()
的结果仍然显示掩码。
Content-Disposition: form-data; name="cost"
1,000
在这种情况下,我们如何去除面具?
首先,要从输入中获取未屏蔽的值,请使用 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="masked-cost"
1,000
------WebKitFormBoundaryMHLOLWal6cTPLuBG Content-Disposition: form-data; name="cost"
1000
刚找到另一种方法。
我们可以使用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.
的使用
很简单。在您的 javascript 中使用字符串的 .replace 方法和正则表达式 \D,它是匹配所有非数字的 shorthand 字符 class。所以步骤是:
获取输入掩码字段的值。
var number = $("#your_field_id").val();
现在使用正则表达式为 \D 的 .replace 方法
number = number.replace(/\D/g,'');
请记住,这只是一种技巧,上面的代码仅适用于数字。根据您的要求使用正则表达式。 more https://regexr.com
碰巧我的 ajax 表单有一个文件上传输入,因此我必须使用 FormData
而不是简单的 .serialize()
来提交它。然后我发现我的jquery.inputmask上的autoUnmask
已经失效了
示例如下: http://jsfiddle.net/btqtnumL/1/
提交表单时,.serialize()
的结果中有一个已删除输入掩码的值。但是 FormData()
的结果仍然显示掩码。
Content-Disposition: form-data; name="cost"
1,000
在这种情况下,我们如何去除面具?
首先,要从输入中获取未屏蔽的值,请使用 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="masked-cost"
1,000 ------WebKitFormBoundaryMHLOLWal6cTPLuBG Content-Disposition: form-data; name="cost"
1000
刚找到另一种方法。
我们可以使用jquery .val()
来获取不带掩码的值。
$.each($('[data-mask="integer"]'), function (idx) {
var input = $('[data-mask="integer"]')[idx];
var actualValue = $(input).val();
$(input).val(actualValue);
});
然后我们可以用 $form.serialize()
.
这样,我们就避免了FormData
api.
很简单。在您的 javascript 中使用字符串的 .replace 方法和正则表达式 \D,它是匹配所有非数字的 shorthand 字符 class。所以步骤是:
获取输入掩码字段的值。
var number = $("#your_field_id").val();
现在使用正则表达式为 \D 的 .replace 方法
number = number.replace(/\D/g,'');
请记住,这只是一种技巧,上面的代码仅适用于数字。根据您的要求使用正则表达式。 more https://regexr.com