在提交更新之前,我正在检查表单
中的值是否已更改。如果更改了表单
中的所有其他控件,则会对其进行标识,但不会识别输入类型=文件
控件。下面是我尝试的示例,如果您尝试提交表单
,无论是否上载文件,响应都不会更改。为什么只有输入类型=文件时才会出现这种行为?为什么未识别
输入类型=文件
中的更改?
var form_serialize = "";
$(function() {
form_serialize = $("#frmProfile").serialize();
})
$('.submit').on('click', function(e) {
e.preventDefault();
var isChanged = $("#frmProfile").serialize() == form_serialize ? false : true;
if (isChanged)
$('body').append('changed');
else
$('body').append('Not changed');
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="frmProfile">
<input type="file" />
<input type="submit" class="submit" value="Submit" />
</form>
根据序列化的留档()
文件选择元素中的数据未序列化。
相反,您可以使用jQuery ajaxForm插件,该插件支持。
或者您可以使用FormData
对象,请参考这些问题:JQuery/Ajax Form提交(enctype="Multipart/form-data")。为什么'contentType: False'在PHP中引起未定义的索引?,用jQ发送多部分/formdatauery.ajax