2009-11-28 14 views
191

¿Cuál es la mejor manera de probar una cadena vacía con jquery-out-of-the-box, es decir, sin complementos? Intenté this.¿Cuál es la mejor manera de probar una cadena vacía con jquery-out-of-the-box?

Pero no funcionó al menos de fábrica. Sería bueno usar algo que está incorporado.

no me gustaría repetir

if (a == null || a=='') 

todas partes si alguna if (isempty(a)) estaría disponible.

+1

posible duplicado de [¿Cuál es la mejor manera de comprobar si hay una cadena vacía en JavaScript?] (Http://stackoverflow.com/questions/154059/what-is-the-best-way-to- check-for-an-empty-string-in-javascript) –

Respuesta

467
if (!a) { 
    // is emtpy 
} 

Para ignorar blanco espacio para cadenas:

if (!a.trim()) { 
    // is empty or whitespace 
} 

Si necesita soporte heredado (IE8-) para trim(), use $.trim o polyfill.

+0

Si esto es cierto, entonces ¡gracias! – Martin

+1

, pero, ¿esto comprueba ""? ¿Eso no solo verifica si solo es nulo y también debe verificar si está vacío porque no es lo mismo que nulo? – PositiveGuy

+9

Cadena vacía @CoffeeAddict es falso en JavaScript, así que sí, la expresión se evalúa como verdadera si '' a'' es "" o cualquier otro valor falso (nulo, falso, indefinido, 0, NaN). – David

2
if(!my_string){ 
// stuff 
} 

y

if(my_string !== "") 

si desea aceptar nula, pero rechaza vacío

EDIT: woops, olvidó su condición es si está vacío

25

El enlace que ha dado parece estar intentando algo diferente a la prueba que intenta evitar repetir.

if (a == null || a=='') 

prueba si la cadena es una cadena vacía o nula. El artículo con el que vinculó prueba si la cadena consiste completamente en espacios en blanco (o está vacía).

La prueba de que ha descrito puede ser reemplazado por:

if (!a) 

Debido a que en javascript, una cadena vacía, y nula, tanto como resultado false en un contexto booleano.

+0

'if (! A)' ¿no fallará una cadena que consta de, por ejemplo, 4 espacios? '' – KNU

+0

@KNU Sí, pero la pregunta se refiere a una cadena vacía, y una cadena compuesta de espacios no es una cadena vacía. Vea lo que escribí sobre la diferencia entre lo que se preguntó y lo que hace el código vinculado – SpoonMeiser

+0

Esta respuesta es incorrecta. Trata '0' como una cadena vacía, que no es. –

2

Intente ejecutar esto en la consola de su navegador o en un node.js repl.

var string = ' '; 
string ? true : false; 
//-> true 

string = ''; 
string ? true : false; 
//-> false 

Por lo tanto, una construcción de bifurcación simple será suficiente para la prueba.

if(string) { 
    // string is not empty 
} 
+0

es mejor decir "! String" en lugar de "string? True: false" o incluso solo "string". –

2

Dado que también puede ingresar números, así como cadenas de tipo fijo, la respuesta debería ser en realidad:

function isBlank(value) { 
    return $.trim(value); 
} 
-1

probar este

if(a=='null' || a=='') 
+0

El OP específicamente declaró que están buscando una alternativa a esto. – Wayne

2

Comprobar si los datos es una cadena vacía (e ignore cualquier espacio en blanco) con jQuery:

function isBlank(data) { 
    return ($.trim(data).length == 0); 
} 
20

Basado en David's answer Personalmente, me gusta comprobar primero el objeto dado si se trata de una cadena.De lo contrario llamar .trim() en un objeto no existente podría lanzar una excepción:

function isEmpty(value) { 
    return typeof value == 'string' && !value.trim() || typeof value == 'undefined' || value === null; 
} 

Uso:

isEmpty(undefined); // true 
isEmpty(null); // true 
isEmpty(''); // true 
isEmpty('foo'); // false 
isEmpty(1); // false 
isEmpty(0); // false 
-4
if((a.trim()=="")||(a=="")||(a==null)) 
{ 
    //empty condition 
} 
else 
{ 
    //working condition 
} 
+0

Si a es '' nulo'' entonces '' a.trim() '' fallaría. Esta es una mala orden para verificar las cosas. Y si cambia el orden, su respuesta no proporciona nada, eso no se ha sugerido antes. –

1

Mientras tanto podemos tener una función que comprueba para todos 'se vacía' como nulo, indefinido , '', '', {}, []. Así que acabo de escribir esto.

var isEmpty = function(data) { 
    if(typeof(data) === 'object'){ 
     if(JSON.stringify(data) === '{}' || JSON.stringify(data) === '[]'){ 
      return true; 
     }else if(!data){ 
      return true; 
     } 
     return false; 
    }else if(typeof(data) === 'string'){ 
     if(!data.trim()){ 
      return true; 
     } 
     return false; 
    }else if(typeof(data) === 'undefined'){ 
     return true; 
    }else{ 
     return false; 
    } 
} 

Casos de uso y resultados.

console.log(isEmpty()); // true 
console.log(isEmpty(null)); // true 
console.log(isEmpty('')); // true 
console.log(isEmpty(' ')); // true 
console.log(isEmpty(undefined)); // true 
console.log(isEmpty({})); // true 
console.log(isEmpty([])); // true 
console.log(isEmpty(0)); // false 
console.log(isEmpty('Hey')); // false 
Cuestiones relacionadas