2013-06-27 33 views
0

當我通過循環迴路我想匹配,如果數組包含一個值,用戶輸入,如果優秀的人才隊伍則消息國家存在。但這不起作用。下面的代碼:

<input type="text" id="topics" > 
<a id="submit-button" href="#">button</a> 

$('#submit-button').click(function(){ 

    var isCountry = $("#topics").val(); 

    $.each(topics, function(i, item) { 
     if(isCountry == topics[i].value){ 

      alert("country exists"); 
     }else{ 
      alert("country doesn't exists"); 
     } 
     }); 

}); 

完整的代碼是在這裏:http://jsfiddle.net/4XHPY/

感謝你們

+0

究竟「不工作」?發生了什麼,你期望發生什麼? –

+0

例如,如果用戶鍵入「阿爾及利亞」,它應該提醒「國家存在」,如果用戶鍵入一些無意義的「erenqetntnrt」,這應該提醒「國家不存在」。 – medzi

+1

就像是:http://jsfiddle.net/4XHPY/4/ –

回答

0

你可以使用,使用較低的情況下,也似乎更合適:

DEMO

$('#submit-button').click(function() { 

     var isCountry = $("#topics").val(), 
      exists = false; 

     $.each(topics, function (i, item) { 
      if (isCountry.toLowerCase() == topics[i].value.toLowerCase()) { 

       exists = true; 
       return false; 
      } 
     }); 
     if (exists) alert("country exists"); 
     else alert("country doesn't exists"); 
    }); 
2

您的代碼工作。它只是循環在你的陣列(其被存儲在主題變量)和警報消息上每一步如果輸入的值等於第i個值。因此,如果您輸入阿爾及利亞,那麼在第三次迭代時,您會看到一條消息「國家存在」,在您將看到「國家不存在」的所有其他迭代中。

0

根據您的要求,您的代碼在小提琴中工作正常。

它顯示警報消息「國家存在」如果輸入值是在數組中。但是,由於您正在爲「主題」數組的每個索引循環播放警報消息,因此它還會顯示「國家/地區不存在」警報以及「國家/地區存在」警報消息。

1

在你的代碼中,每個循環都被迭代到主題對象的長度,這就是爲什麼給予警報很多次。 取而代之的是,下面的腳本使用:

$('#submit-button').click(function(){ 

    var isCountry = $("#topics").val(); 
    var filtered = $(topics).filter(function(){ 
     return this.value == isCountry; 
    }); 
    if(filtered.length == 0){ 
     alert("country doesn't exists"); 
    }else{ 
     alert("country exists"); 
    } 

}); 

這裏的工作演示:http://jsfiddle.net/4XHPY/12/