2014-04-01 105 views
1

我有一個有3個輸入文件字段的表單。我想確保他們不會兩次上傳相同的文檔。現在我的代碼如下:Jquery比較輸入值

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

代碼工作,但我的問題是因爲它是對自身比較,它總是拋出的錯誤。它標識所有文件字段,當我想要比較所有文件字段而不是它自己時。有沒有辦法排除被比較的字段?基本上我想檢查除$(this)字段以外的所有文件字段值。

+2

值我一定是被厚,但?哪裏'T'從何而來? –

回答

1

如果您知道總會有至少一個重複,爲什麼不只是允許一個重複?

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

謝謝。像魅力一樣工作。 – user982853

0

我有一種感覺,這是你在找什麼:

jQuery: exclude $(this) from selector

爲了給您提供更具體的答案,我需要多一點的代碼上下文。 (IE什麼是T,代碼是如何到達的,等等)

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()); 
    } 
}) 
+0

爲什麼downvote? +1來補償,因爲它實際上是我建議的,但是用數組 –

+0

@JuanMendes我想知道同樣的事情,但現在已經消失了。 –

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; 
    } 
    }); 
})()