使用 jQuery 在表单中仅序列化类型=文件
Serialize only type=file in a form using jQuery
我在表单中有一堆控件,其中包括几个输入类型='文件'框。 我想验证所有文件输入并确保选择了文件。 由于其他一些问题,我无法使用"必需"属性。
我虽然序列化所有文件框的数据并转换为数组,然后验证数组。 如果任何文件框没有值,我可以指示用户选择一个文件。我正在尝试将代码如下所示,它返回空。
var dataString = $("#adminForm").find('input[type="file"]').serialize();
有人可以建议如何仅序列化文件框吗
更新 1
通过查看答案,我了解到序列化不是验证表单的正确方法。 我为每个文件框添加了一个单独的类"filebox",并能够进行如下验证。
$('.filebox').each(function(i, obj) {
if($('#'+obj.id).val() == 0) {
/*raise error*/
return;
}
});
.serialize()
将跳过未命名的输入。向输入添加 name
属性以包含它们,或删除以排除它们。
jQuery.serialize()
不序列化文件输入:http://api.jquery.com/serialize/#entry-longdesc
不过,您可以使用FormData
对象。
$('#test').submit(function(e) {
e.preventDefault();
var $copy = $(this).clone();
// remove everything except file inputs
$copy.find('select, input:not([type=file])').remove();
var data = new FormData($copy.get(0));
$.ajax({
type: 'POST',
url: 'upload.php',
data: data,
//Options to tell jQuery not to process data or worry about content-type.
cache: false,
contentType: false,
processData: false
}).always(function(xhr, data) { console.log(data) });
});
注意这个小提琴中的请求:http://jsfiddle.net/zka9k8Lf/
相关文章:
- Ajax发布表单序列化,发布引号'
- 序列化数据属性中对象的最可靠方法
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 为什么JSON.stringify没有序列化原型值
- 有没有一个Nodejs库可以序列化和反序列化命名组件的路径(比如URL路径名)
- 是否可以在javascript中反序列化java对象
- jQuery Ajax数组序列化错误
- 对象序列化,JAVA,Javascript
- 在jquery中以序列化的形式传递额外的paparameter
- 如何使用angularjs序列化对象
- 使用System从C#集合创建JSON数组.网状物剧本序列化
- 类型错误:序列化表单时,未定义不是函数
- 使用 jQuery 在表单中仅序列化类型=文件
- 如何使用Jackson和默认类型(反)序列化EnumMap
- javascript对象的服务器端类型是什么,使用JSON序列化客户端,通过ajax调用传递
- 输入类型文件未序列化jquery
- Javascript类型对象的序列化
- 在JavaScript中序列化HTML表单,然后在c#中转换为.net类型
- 在Ext JS存储中反序列化json数据时区分模型类型
- Ajax/Json错误:";在序列化类型为"0"的对象时检测到循环引用;当试图带来一个列表