2012-07-15 14 views
21

soy más de una persona PHP, JS no - y creo que mi problema es más un problema de sintaxis ..JS jQuery - comprobar si el valor está en serie

Tengo una pequeña jQuery para "validar" y cheque valor de entrada .

Funciona bien para palabras sueltas, pero necesito una matriz.

Estoy usando el 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; 
      }); 

     }); 

ahora - este if (jQuery.inArray(jQuery("input:first"), ar)) no está funcionando bien .. todos los valores que puse será validado como OK. (incluso vacío)

Necesito validar solo valores de la matriz (ar).

me trataron también if (jQuery.inArray(jQuery("input:first"), ar) == 1) // 1,0,-1 tried all

lo que estoy haciendo mal?

Pregunta extra: cómo hacerlo NO en el array en jQuery ?? (el equivalente de PHP if (!in_array('1', $a)) - Me SW somehre que no va a funcionar, y la necesidad de usar algo como esto:. !!~

+0

'$ .inArray (. ..) == -1' <----- no existe tal elemento en una matriz – zerkms

Respuesta

54

Usted está comparando un objeto jQuery (jQuery('input:first')) para cuerdas (los elementos de la matriz)
Cambiar el código con el fin de comparar el valor de la entrada (la cual es una cadena) a los elementos de la matriz:

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

el método inArray vuelve -1 si el elemento no se encuentra en la matriz, así como su bono respuesta a cómo determinar ne si un elemento es no en una matriz, utilice esto:

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

Su primer supuesto 'if' es que '-1' se trata como un valor falso? ¿No debería ser '! = -1'? +1 para la respuesta completa. –

+0

gracias, solo estaba modificando el fragmento de código y debe haberse deslizado. –

+0

bien, gracias, funciona genial. pero tengo una pregunta de aclaración, así que no hay forma de usar la función 'inArray()' sin compararla con '==' -1, '== 0' o similar ?? –

1

En cuanto a su pregunta extra, tratar if (jQuery.inArray(jQuery("input:first").val(), ar) < 0)

0

Solución alternativa de los valores de comprobación de

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

La propiedad Array.prototype representa el prototipo para el constructor Array y le permite agregar nuevos properties y methods a todos Array o bjects. podemos crear un prototipo para este fin

Array.prototype.has_element = function(element) { 
    return $.inArray(element, this) !== -1; 
}; 

y luego usarlo como esto

var numbers= [1, 2, 3, 4]; 
numbers.has_element(3) => true 
numbers.has_element(10) => false 

Ver la demostración a continuación

Array.prototype.has_element = function(element) { 
 
    return $.inArray(element, this) !== -1; 
 
}; 
 

 

 

 
var numbers = [1, 2, 3, 4]; 
 
console.log(numbers.has_element(3)); 
 
console.log(numbers.has_element(10));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Cuestiones relacionadas