2011-08-11 10 views
37

Me aparece un error que indica que tiene una instrucción de continuación ilegal. Tengo una lista de palabras para verificar la validación del formulario y el problema es que estaba combinando algunas de las subcadenas con las palabras reservadas, así que creé otra matriz de palabras limpias para que coincida. Si coincide con una palabra limpia seguirá otra cosa si coincide con una palabra reservada alertar al usuario

$.each(resword,function(){ 
     $.each(cleanword,function(){ 
      if (resword == cleanword){ 
       continue; 
      } 
      else if (filterName.toLowerCase().indexOf(this) != -1) { 
       console.log("bad word"); 
       filterElem.css('border','2px solid red'); 
       window.alert("You can not include '" + this + "' in your Filter Name"); 
       fail = true; 
      } 
     }); 
    }); 

Respuesta

80

La declaración continue está muy bien para los bucles de JavaScript normales, pero el método jQuery each requiere que use la instrucción return en su lugar. Devuelve todo lo que no sea falso y se comportará como continue. Return false, y se comportará como un break:

$.each(cleanword,function(){ 
    if (resword == cleanword){ 
     return true; 
    } 
    else if (filterName.toLowerCase().indexOf(this) != -1) { 
     //...your code... 
    } 
}); 

Para obtener más información, consulte la jQuery docs.

+1

En realidad, jQuery no lo verifica de manera flexible, si no es explícitamente falso ('=== falso'), entonces continuará. Así que puedes hacer un 'return;' y volverá indefinido, lo que actuará como una continuación. –

+0

@Bob - Gracias, no estaba 100% seguro de si tenía que ser explícitamente falso, o simplemente falsy. –

7

Sustituir el continuar con

return true; 
3

Está utilizando continue que está destinado para javascript for bucles dentro de un controlador jquery each. Esto no funcionará El equivalente de continue en jquery each regresa un valor no falso.

if (resword == cleanword){ 
    return true; 
} 
3

En lazo jQuery.each usted tiene que devolver, ya sea verdadera o falsa para alterar las interations bucle:

podemos romper el bucle $ each() a una iteración particular haciendo que la la función de devolución de llamada devuelve falso. La devolución de no falso es la misma que la instrucción de continuar en un ciclo for; saltará de inmediato a la siguiente iteración .

por lo que tendría que hacer esto:

$.each(resword,function(){ 
    $.each(cleanword,function(){ 
     if (resword == cleanword){ 
      return true; 
     } 
     else if (filterName.toLowerCase().indexOf(this) != -1) { 
      console.log("bad word"); 
      filterElem.css('border','2px solid red'); 
      window.alert("You can not include '" + this + "' in your Filter Name"); 
      fail = true; 
     } 
    }); 
}); 
-1

no puede utilizar continuar allí. Continuará automáticamente de todos modos, simplemente elimínelo, y creo que debería funcionar según su descripción.

0

en Jquery cada método estamos llamando a una función cada vez que bucle dentro de la matriz, por lo que continue no funcionará, necesitamos return true para salir de una función. solo en bucles simples sin función anónima, podemos usar continue

Cuestiones relacionadas