JS jQuery - check if value is in array
arrays, jquery, validation
Solution
You are comparing a jQuery object (`jQuery('input:first')`) to strings (the elements of the array). Change the code in order to compare the input's value (wich is a string) to the array elements:
if (jQuery.inArray(jQuery("input:first").val(), ar) != -1)
The `inArray` method returns `-1` if the element wasn't found in the array, so as your bonus answer to how to determine if an element is not in an array, use this :
if(jQuery.inArray(el,arr) == -1){
// the element is not in the array
};
Problem
I am more of a PHP person, not JS - and I think my problem is more a syntax problem .. I have a small jQuery to "validate" and check input value . It works ok for single words, but I need array. I am using the `inArray()` of jQuery . ``` var ar = ["value1", "value2", "value3", "value4"]; // ETC... jQuery(document).ready(function() { jQuery("form#searchreport").submit(function() { if (jQuery.inArray(jQuery("input:first"), ar)){ //if (jQuery("input:first").val() == "value11") { // works for single words jQuery("#divResult").html("<span>VALUE FOUND</span>").show(); jQuery("#contentresults").delay(800).show("slow"); return false; } // SINGLE VALUE SPECIAL CASE / Value not allowed if (jQuery("input:first").val() == "word10") { jQuery("#divResult").html("YOU CHEAT !").show(); jQuery("#contentresults").delay(800).show("slow"); return false; } // Value not Valid jQuery("#divResult").text("Not valid!").show().fadeOut(1000); return false; }); }); ``` now - this `if (jQuery.inArray(jQuery("input:first"), ar))` is not working right .. every value that I put will be validated as OK . (even empty) I need to validate only values from the array (ar) . I tried also `if (jQuery.inArray(jQuery("input:first"), ar) == 1) // 1,0,-1 tried all` what am i doing wrong ? Bonus question : how to do NOT in array in jQuery ?? (the equivalent of PHP `if (!in_array('1', $a))` - I sw somehre that it will not work , and need to use something like this : `!!~`