我有一个包含3个输入文件字段的表单。我想确保他们不会两次上传相同的文档。现在我的代码如下:
$(':input.File').each(function() {
if ($(this).val() == T) {
$this.after('<br/><span class="error">Duplicate</span>');
}
})
代码有效但我的问题是它总是抛出错误,因为它正在与自身进行比较。当我希望它比较所有文件字段时,它会识别所有文件字段。
有没有办法排除被比较的字段?基本上我想检查除$(this)
字段之外的所有文件字段值。
答案 0 :(得分:2)
如果你知道总会有至少一个副本,为什么不只是允许一个重复?
i = 0;
$(':input.File').each(function() {
if ($(this).val() == T && i != 0) {
$this.after('<br/><span class="error">Duplicate</span>');
}
i++;
})
答案 1 :(得分:1)
创建一个空数组,然后遍历每个字段并检查该字段是否在数组中,如果不添加它。
var arr = [];
$(':input.File').each(function(){
if(arr.indexOf($(this).val()) > -1){
$(this).after("<br/><span class='error'>Duplicate</span> ");
}else{
arr.push($(this).val());
}
})
答案 2 :(得分:1)
您可以使用地图来跟踪存在的值
(function(){
var exists = {};
$(':input.File').each(function() {
if(exists[$(this).val()]){
$this.after("<br/><span class='error'>Duplicate</span> ");
} else {
exists[$(this).val()] = true;
}
});
})()
答案 3 :(得分:0)
答案 4 :(得分:0)
在每次用户操作后进行检查:
$('input[type=file]').change(function(){
$('input[type=file][value="'+$(this).val()+'"]').not(this).after("<br/><span class='error'>Duplicate</span> ");
});