我得到了一段 jquery 代码,它检查表单中的输入字段是否更改,然后无法提交按钮,但是,它不适用于输入类型 = 文件,如果我选择文件,按钮将保持禁用状态。任何帮助,将不胜感激? 这是 jquery 代码
$('form')
.each(function(){
$(this).data('serialized', $(this).serialize())
})
.on('change input', function(){
$(this)
.find('input:submit, button:submit')
.attr('disabled', $(this).serialize() == $(this).data('serialized'))
;
})
.find('input:submit, button:submit')
.attr('disabled', true)
;
最佳答案
.serialize()
不适用于文件输入。您可以获得输入的文件名并将其保存。
function mySerialize(obj) {
if (obj.type == 'file') {
return obj.files[0] ? obj.files[0].name : '';
} else {
return $(obj).serialize();
}
}
$('form')
.each(function(){
$(this).data('serialized', mySerialize(this));
})
.on('change input', function(){
$(this)
.find('input:submit, button:submit')
.attr('disabled', mySerialize(this) == $(this).data('serialized'))
;
})
.find('input:submit, button:submit')
.attr('disabled', true)
;
这假设单个文件输入。如果您有多个文件输入,则需要遍历 mySerialize()
中的所有文件并将它们连接起来,而不是仅仅使用 files[0]
。
关于javascript - 如果表单值更改,启用提交按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48675281/