使用jQuery比较输入值

时间:2014-04-01 23:11:06

标签: jquery comparison each

我有一个包含3个输入文件字段的表单。我想确保他们不会两次上传相同的文档。现在我的代码如下:

$(':input.File').each(function() {
    if ($(this).val() == T) {
        $this.after('<br/><span class="error">Duplicate</span>');
    }
})

代码有效但我的问题是它总是抛出错误,因为它正在与自身进行比较。当我希望它比较所有文件字段时,它会识别所有文件字段。

有没有办法排除被比较的字段?基本上我想检查除$(this)字段之外的所有文件字段值。

5 个答案:

答案 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)

我觉得这就是你要找的东西:

jQuery: exclude $(this) from selector

为了给你一个更具体的答案,我需要更多的代码上下文。 (IE。什么是T,代码是如何到达的等等)

答案 4 :(得分:0)

在每次用户操作后进行检查:

$('input[type=file]').change(function(){
     $('input[type=file][value="'+$(this).val()+'"]').not(this).after("<br/><span class='error'>Duplicate</span> ");
});