Javascript 当ajax表单作为FromData提交时,如何删除inputmask?
碰巧我的ajax表单有一个文件上传输入,因此我必须用Javascript 当ajax表单作为FromData提交时,如何删除inputmask?,javascript,jquery,ajax,jquery-inputmask,Javascript,Jquery,Ajax,Jquery Inputmask,碰巧我的ajax表单有一个文件上传输入,因此我必须用FormData而不是简单的.serialize()来提交它。然后我发现jquery.inputmask上的自动取消掩码不再有效 以下是一个例子: 提交表单时,.serialize()的结果具有一个删除输入掩码的值。但是FormData()的结果仍然显示掩码 内容配置:表单数据;name=“成本” 一千 在这种情况下,如何删除掩码?首先,要从输入中获取未屏蔽的值,请使用inputmask(“unmaskedvalue”) 一种方法是将输入元素
FormData
而不是简单的.serialize()
来提交它。然后我发现jquery.inputmask上的自动取消掩码
不再有效
以下是一个例子:
提交表单时,.serialize()
的结果具有一个删除输入掩码的值。但是FormData()
的结果仍然显示掩码
内容配置:表单数据;name=“成本”
一千
在这种情况下,如何删除掩码?首先,要从输入中获取未屏蔽的值,请使用inputmask(“unmaskedvalue”) 一种方法是将输入元素重命名为类似“蒙版成本”,然后使用方法 在服务器端,您可以检索具有未屏蔽值的成本变量 FormData看起来像这样
var formData = new FormData($form[0]);
formData.append('cost', $('input[name="masked-cost"]').inputmask('unmaskedvalue'));
------WebKitFormBoundaryMHLOLWal6cTPLuBG内容配置:表单数据;name=“隐藏成本”
一千
------WebKitFormBoundaryMHLOLWal6cTPLuBG内容配置:表单数据;name=“成本”
一千
这里是更新的演示刚刚找到了另一种方法 我们可以使用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的regex,这是一个匹配所有非数字的速记字符类。因此,步骤如下:
获取输入掩码字段的值
var number = $("#your_field_id").val();
现在使用.replace方法替换为\D的正则表达式
number = number.replace(/\D/g,'');
请记住,这只是一种技术,以上代码仅适用于数字。根据您的要求使用正则表达式。更多因此您的回答意味着没有方便的设置来自动删除掩码,不是吗?好吧,我认为没有办法自动删除掩码,尤其是在使用FormData时,因为如果使用$.serialize,inputmask库会很小心。
number = number.replace(/\D/g,'');