2016-08-12 53 views
0

爲了簡化我的問題,我重寫了沒有解析CSV的代碼,而是使用了一個包含數據的變量。jQuery檢查多個CSV列表

--CODE編輯---

$(document).ready(function() { 
    var qID = 'xxx'; 
    var source = ['text1', 'text2', 'etc3']; 
    var source2 = ['text4', 'text5', 'etc6']; 
    $('#question' + qID + ' input[type="text"]').change(function() { 
     var validVal = 0; 
     var inputVal = $(this).val(); 
     // Loop through the text and test the input value 
     $(source).each(function(i) { 
      if (inputVal == this) { // If a match is found... 
       validVal = 1; 
      } 
     }); 
     // If a valid text was entered 
     if (validVal == 1) { // A valid input 
      alert("GOOD"); 
     } else { // An invalid input 
      alert("NOT GOOD"); 
     } 

     var validVal2 = 0; 
     var inputVal2 = $(this).val(); 

     $(source2).each(function(j) { 
      if (inputVal2 == this) { // If a match is found... 
       validVal2 = 1; 
      } 
     }); 
     // If a valid text was entered 
     if (validVal2 == 1) { // A valid input 
      alert("GOOD2"); 
     } else { // An invalid input 
      alert("NOT GOOD2"); 
     } 
    }); 
}); 

該腳本正常工作爲一個信號源(VAR源),但我想在同一個文本字段,檢查2個變量(源,源2),將產生不同警報。

腳本通過limesurvey表單運行,輸入是一個簡單的[type =「text」]字段。

如何在同一文本字段中檢查2個不同的文本數組?

+0

* fullArray *是全球性的,這可能是問題之一:

var valid = source.some(function (terms) { return terms.includes(inputVal); }); 

在ES6語法這可以做一個班輪。您應該先放置* var *以將其定義爲本地。 –

+0

我試過了,仍然無法使它工作...我不認爲我可以設法有2或3 $ .get(url,功能(數據)與同一個$(文檔)下的各種網址?任何想法? – qwertyg

+0

你可以在* $(document).ready()*中獲得所有* $。*。請提供代碼加載其他csv文件的位置,並添加更多關於問題的詳細信息。發生? –

回答

2

每當你發現自己把變量名稱放在變量名上來創建一個系列時,你需要停下來思考你在那裏實際做了些什麼。計數變量名稱是總是錯誤。

使用數組。

var qID = 'xxx'; 

var source = []; 
source.push(['text1', 'text2', 'etc']); 
source.push(['text1', 'text2', 'etc44']); 
source.push(['text15', 'text25', 'etc454']); 

$('#question' + qID + ' input[type="text"]').change(function() { 
    var valid = false; 
    var inputVal = $(this).val(); 

    $.each(source, function(i, terms) { 
     $.each(terms, function(i, term) { 
      valid = inputVal === term; 
      return !valid; // returning false stops the .each() loop 
     }); 
     return !valid; 
    }); 

    if (valid) { 
     alert("GOOD"); 
    } else { 
     alert("NOT GOOD"); 
    } 
}); 

一個更吸引人的方式來表達嵌套循環上述用途Array內置方法。據我看到變量

var valid = source.some(terms => terms.includes(inputVal)); 
+0

非常感謝您的答覆和時間發佈此代碼。然而,我想要實現的是運行if 3次,因爲source,source2和source3變量要單獨驗證並生成不同的警報。我編輯了我的代碼,以瞭解我的意思。對於一個變量,一切都按預期工作,但是當我嘗試在同一文本框中檢查3個不同的驗證代碼數組時,並不像預期的那樣工作。我沒有得到任何錯誤,但結果是不正確的。 – qwertyg

+0

@qwertyg嗯......我的代碼真的和你的沒什麼不同。沒有任何東西讓你檢查'source [0]','source [1]'和'source [2]'來單獨驗證和使用不同的警報。 – Tomalak

+0

thnx再次,我試過你的代碼,它工作正常,因爲它是一個驗證。我嘗試而不是$ .each(源,功能(我,術語),只在源[0]搜索:$ .each(源[0],功能(我,術語),然後它不起作用。在每個語法錯誤?如果我警告源[0]我看到正確的數組顯示。什麼可能是錯誤的? – qwertyg