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 : !!~
This question is related to
jquery
arrays
validation
The Array.prototype
property represents the prototype for the Array
constructor and allows you to add new properties
and methods
to all Array
objects. we can create a prototype for this purpose
Array.prototype.has_element = function(element) {
return $.inArray( element, this) !== -1;
};
And then use it like this
var numbers= [1, 2, 3, 4];
numbers.has_element(3) => true
numbers.has_element(10) => false
See the Demo below
Array.prototype.has_element = function(element) {_x000D_
return $.inArray(element, this) !== -1;_x000D_
};_x000D_
_x000D_
_x000D_
_x000D_
var numbers = [1, 2, 3, 4];_x000D_
console.log(numbers.has_element(3));_x000D_
console.log(numbers.has_element(10));
_x000D_
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
_x000D_
As to your bonus question, try if (jQuery.inArray(jQuery("input:first").val(), ar) < 0)
Alternate solution of the values check
//Duplicate Title Entry
$.each(ar , function (i, val) {
if ( jQuery("input:first").val()== val) alert('VALUE FOUND'+Valuecheck);
});
Source: Stackoverflow.com