Який найкращий спосіб перевірити порожню рядок за допомогою jquery-out-of-the-box?


229

Який найкращий спосіб перевірити порожню рядок за допомогою jquery-out-of-the-box, тобто без плагінів? Я спробував це .

Але це не спрацювало принаймні поза коробкою. Було б непогано використовувати щось, що є вбудованим.

Я б не хотів повторювати

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

скрізь, якщо деякі if (isempty(a)) будуть доступні.



Відповіді:


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

Щоб ігнорувати пробіл для рядків:

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

Якщо вам потрібна застаріла підтримка (IE8-) для trim(), використання $.trimабо поліфіл .


10
@CoffeeAddict порожній рядок є хибним у JavaScript, тому так, вираз оцінюється як істинне, якщо aє "" або будь-яке інше значення помилки (null, false, undefined, 0, NaN).
Девід Гелсінг

21
Якщо вам також потрібно поєднувати рядки з лише пробілами, це хороша ідеяif (!$.trim(a))
Ilari Kajaste

3
На мій досвід, більшість разів, коли ви хочете запустити цей тест, ви також хочете, щоб він включав тестування на пробіл. Оскільки це звичайний випадок, ОП повинен включити у свою відповідь коментар від @IlariKajaste
Бейн

17
Прийнята відповідь буде невдалою, коли ви введете 0, однак він буде працювати для 1, 2, 3, 4 і т. Д.
Стівен

5
Це не if (!a.trim())трохи небезпечно? Що робити, якщо aце значення не визначено чи недійсне?
Тимо

27

Надане вами посилання, схоже, намагається зробити щось інше на тесті, який ви намагаєтеся уникати повторення.

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

перевіряє, чи рядок є порожнім рядком або нулем. Стаття, яку ви пов’язали з тестами, якщо рядок повністю складається з пробілів (або порожній).

Описаний вами тест можна замінити на:

if (!a)

Тому що в JavaScript, порожній рядок і null обидва оцінюють як false в булевому контексті.


if(!a)Ви не можете провести рядок, що складається з проміжків 4 ``
КНУ

@KNU Так, але питання задає порожній рядок, а рядок, що складається з пробілів, не є порожньою. Подивіться, що я писав про різницю між запитанням і тим, що робить зв'язаний код
SpoonMeiser

Ця відповідь неправильна. Він розглядає "0" як порожню рядок, який не є.
Джон Генкель

@JohnHenckel: Це трактуватиметься 0як порожня рядок, але ні "0". Я припускаю, що це ви мали на увазі? Можливо, що це використовується в ситуації, коли ви знаєте, що aце або рядок, або нуль, але так. Щось слід пам’ятати.
SpoonMeiser

25

Виходячи з відповіді Девіда, я особисто хотів би спочатку перевірити даний об’єкт, чи він взагалі є рядком. В іншому випадку виклик .trim()неіснуючого об'єкта призведе до виключення:

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

Використання:

isEmpty(undefined); // true
isEmpty(null); // true
isEmpty(''); // true
isEmpty('foo'); // false
isEmpty(1); // false
isEmpty(0); // false

Я перевіряю <br /> <p> </p> з textarea, і він сказав, що не порожній, як слід
kreamik

5

Перевірте, чи дані порожній рядок (і ігноруйте будь-який пробіл) за допомогою jQuery:

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

5

Щоб перевірити наявність усіх "порожніх", таких як null, undefined, '', '', {}, [] .

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;
    }
}

Використовуйте випадки та результати.

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

3
if(!my_string){ 
// stuff 
}

і

if(my_string !== "")

якщо ви хочете прийняти null, але відхилити порожню

РЕДАКТИРУЙТЕ: махає, забув ваш стан, якщо він порожній


2

Спробуйте виконати це в консолі веб-переглядача або в репліку node.js.

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

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

Тому для тесту буде достатньо простої гілки розгалуження.

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

1
краще сказати "!! string" замість "string? true: false" або навіть просто "string".
ア レ ッ ク ス

2

Оскільки ви також можете вводити цифри, а також рядки фіксованого типу, відповідь насправді повинна бути:

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

Чи не повинно бути так? return !!$.trim(value);
wonsuc


-4
if((a.trim()=="")||(a=="")||(a==null))
{
    //empty condition
}
else
{
    //working condition
}

Якщо а, nullто a.trim()не вдасться. Це поганий наказ перевірити речі. І якщо ви зміните наказ, у вашій відповіді нічого не передбачено, що раніше не пропонувалося.
Майк Скотті
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.