2015-11-02 46 views
0

目前创建FormData对象时,选中的复选框中加入的“上”的值,并且未选中的复选框完全不通过。FORMDATA和复选框

难道我有一些隐藏的输入正确设置复选框砍,或者是有一些定制我可以FORMDATA,或预先处理呢?

我宁愿一个选中的复选框为1和一个未经检查的为0。我已经可以做到这一点我自己(即丑陋的黑客攻击),但我看不出有任何FORMDATA本机方法。

+0

您可以随时拨打的'FormData'手动对象'set'。否则,它的行为与HTML表单完全相同。 –

+1

而不是添加隐藏的输入,在服务器上进行处理。如果复选框值为'on',则转换为1,如果复选框值为空白或null转换为0.复选框值是由浏览器驱动的,因此您无法更改它。您可以添加额外的属性。 – Jigneshk

回答

2

当前创建FormData对象时,选中的复选框添加值为“on”,未选中的复选框完全不会被传递。

on如果该复选框是缺少value属性

做的仅仅是使用我有一些隐藏的输入破解正确设置复选框

号这正确处理复选框。这是他们如何在窗体中工作,因为表单元素已被添加到HTML中。

试验在处理它的代码的存在或不存在的复选框的。

+0

好处理它是'变种FD =新FORMDATA(myForm的)代码;' – BarryBones41

+0

我的意思是处理服务器端代码HTTP请求您使用的XMLHttpRequest和'fd'可能创造。 – Quentin

+0

这是一个嵌入式系统,我不能改变服务器代码。我只会使用隐藏的输入。 – BarryBones41

0

试试这个:

var checkbox = $("#myForm").find("input[type=checkbox]"); 
$.each(checkbox, function(key, val){ 
    if(this.is(":checked")){ 
    formData.append($(val).attr('name'), true); 
}else{ 
    formData.append($(val).attr('name'), false); 
} 
});