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: !!~
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
};
En ce qui concerne votre question sur les bonus, essayez if (jQuery.inArray(jQuery("input:first").val(), ar) < 0)
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);
});