2011-08-22 71 views
4

我試圖檢查用戶輸入到輸入文本字段的值。一旦他們輸入值並單擊提交,如果它們輸入的值與數組中的值匹配,我試圖產生一個結果,如果不在數組中,則返回另一個結果。jQuery:根據數組中的值檢查輸入值

基本上具有簡單的形式,如下所示:

<form id="checkinput" action="#"> 
<input type="text" value="" id="couponcode" name="coupon code name"/> 
<input type="button" id="submit" value="Submit"/> 
</form> 

當點擊「#submit」,如果在「#couponcode」輸入字段的值等於在數組的值,加一類「成功」的轉換爲ID爲「success_show」的div,否則會顯示「您的優惠券代碼錯誤」等簡單警報。

我將有一個隱藏的div,一旦成功,向div中添加一個「成功」類。

該陣列會週期性變化,並且在不同的時間會有不同的數量。一些簡單的像這樣:

var arr = [ "CA238", "Pete", 8, "John" ]; 
+0

出於好奇,我可以看到這個網站的現場演示,如果您有它運行起來? – Baz1nga

+0

我不會在JS中保留這些數組我會使用AJAX來檢查數據庫或PHP數組 – Jdoonan

回答

10

您可以使用jQuery ...

$.inArray(value, array) // returns -1 if value doesn't exist, otherwise returns index 

編輯 如果你不使用jQuery,那麼你可以在陣列上使用的indexOf

if(array.indexOf(value) < 0){ // doesn't exist 
    // do something 
} 
else { // does exist 
    // do something else 
} 
0

以及你的陣列需要這樣的創建:現在,當你

var a={ couponCode:"CA238", name: "peter"} 

與到位:

var a=[]; 
a["couponcode"]="CA238"; 
a["name"]="peter"; 

或JSON如下想要驗證你的表單運行它通過所有的inout元素使用說$.each,然後獲得每個輸入的ID,並從你創建的數組或從JSON CO獲取相同的vlaue比較兩個值,看看它是否正確。

代碼將是這樣的:

$("input").each(function() 
{ 

    var id=$(this).attr("id"); 
    if(a[id]) // for json a.hasOwnProperty(id) 
    { 
     if($(this).val()!==a[id]) 
     { 
     // do the necessary 
     } 

} 
}); 
3
function include(arr, obj) { 

    for(var i=0; i<arr.length; i++) { 
     if (arr[i] === obj) return true; 
    } 
} 

var arr = [ "CA238", "Pete", 8, "John" ]; 

$("#submit").click(function(e){ 
e.preventDefault(); 

    var val=$("#couponcode").val(); 
    if(include(arr, val)) 
     alert("success"); 

}); 

http://jsfiddle.net/kCYkx/5/

Best way to find if an item is in a JavaScript array?

OR

使用採取HEL inArray

$("#submit").click(function(e){ 
e.preventDefault(); 

    var val=$("#couponcode").val(); 
    if($.inArray(arr,val)) 
     alert("success"); 

}); 

http://jsfiddle.net/kCYkx/6/