web-dev-qa-db-fra.com

JS jQuery - vérifie si la valeur est dans le tableau

Je suis plus PHP personne, pas JS - et je pense que mon problème est davantage un problème de syntaxe ..

J'ai un petit jQuery pour "valider" et vérifier la valeur d'entrée.

Cela fonctionne bien pour les mots simples, mais j'ai besoin d'un tableau.

J'utilise la inArray() de 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;
            });

        });

maintenant - cette if (jQuery.inArray(jQuery("input:first"), ar)) ne fonctionne pas correctement .. chaque valeur que je mets sera validée OK. (même vide)

Je n'ai besoin de valider que les valeurs du tableau (ar).

J'ai aussi essayé if (jQuery.inArray(jQuery("input:first"), ar) == 1) // 1,0,-1 tried all

qu'est-ce que je fais mal ?

Question bonus: comment ne PAS faire en tableau dans jQuery? (L’équivalent de PHP - if (!in_array('1', $a)) - Je pense que cela ne fonctionnera pas et que vous devez utiliser quelque chose comme ceci: !!~

21
Obmerk Kronen

Vous comparez un objet jQuery (jQuery('input:first')) à des chaînes de caractères (les éléments du tableau).
Modifiez le code afin de comparer la valeur de l'entrée (qui est une chaîne) aux éléments du tableau: 

if (jQuery.inArray(jQuery("input:first").val(), ar) != -1)

La méthode inArray renvoie -1 si l'élément n'a pas été trouvé dans le tableau. Pour que votre bonus réponde à la façon de déterminer si un élément est pas dans un tableau, utilisez ceci: 

if(jQuery.inArray(el,arr) == -1){
    // the element is not in the array
};
54
gion_13

En ce qui concerne votre question sur les bonus, essayez if (jQuery.inArray(jQuery("input:first").val(), ar) < 0)

1
Inkbug

Solution alternative du contrôle des valeurs

//Duplicate Title Entry 
    $.each(ar , function (i, val) {
        if ( jQuery("input:first").val()== val) alert('VALUE FOUND'+Valuecheck);
  });
0
Akxaya