2013-12-17 44 views
0

我有3個選擇框, 一個用於國家,另一個用於城市,另一個用於城市周圍的半徑。僅在數組中不存在項時追加

我希望無論用戶在發送和保存所有數據在數據庫之前選擇出現在div中。

我正在努力使這項工作,但我不知道爲什麼我有奇怪的結果。 它什麼都不做,但如果我刪除「!」它有點適合第一個,但我再次得到重複。 我不明白我做錯了什麼。 下面是代碼:

var citySet = new Array; 
function appendCity(){     

    if(!$.inArray($("#businessCityTarget option:selected").text(),citySet)){        

     $("#cityContainer").append($("#businessCityTarget option:selected").text() + "<br>"); 
     citySet.push($("#businessCityTarget option:selected").text()); 

    } 

} 

任何光棚將gratfull

+0

您知道它太難以閱讀無格式的代碼了嗎? – thefourtheye

+0

爲什麼首先有重複? – Blender

回答

0

您應該檢查=== -1< 0

var citySet = new Array; 

function appendCity() { 
    if ($.inArray($("#businessCityTarget option:selected").text(), citySet) === -1) { 
     $("#cityContainer").append($("#businessCityTarget option:selected").text() + "<br>"); 
     citySet.push($("#businessCityTarget option:selected").text()); 
    } 
} 

docs

的$ .inArray()方法類似於JavaScript的原生.indexOf()方法,它返回-1,當它不找不到比賽。如果數組中的第一個元素匹配值,$ .inArray()返回0.

+1

謝謝你的工作! :) –

0

嘗試:

if(citySet.indexOf($("#businessCityTarget option:selected").text()) < 0){ 
    $("#cityContainer").append($("#businessCityTarget option:selected").text() + "<br>"); 
    citySet.push($("#businessCityTarget option:selected").text()); 
} 
0

你可以試試這個:

var citySet = new Array; 
function appendCity(){     

     if($.inArray($("#businessCityTarget option:selected").text(),citySet)===-1){        

      $("#cityContainer").append($("#businessCityTarget option:selected").text() + "<br>"); 
      citySet.push($("#businessCityTarget option:selected").text()); 

     } 

    } 

希望這有助於。 。

+0

如果'!== - 1'爲真,則表示元素存在於數組中。這裏作爲歐普想要它的反面 – Satpal

+0

@薩普爾..你是正確的。編輯我的答案..謝謝.. –