Каков наилучший способ проверки пустой строки с помощью 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, поэтому да, выражение оценивается как true, если a"" или любое другое ложное значение (null, false, undefined, 0, NaN).
Дэвид Хеллсинг

21
Если вам также нужно сопоставлять строки только с пробелами, это хорошая идея для использованияif (!$.trim(a))
Илари Каджасте,

3
По моему опыту, подавляющее большинство раз, когда вы хотите запустить этот тест, вы также хотите, чтобы он включал тестирование для пробелов. Поскольку это обычный случай, OP должен включить в свой ответ комментарий от @IlariKajaste
Bane

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 !== "")

если вы хотите принять ноль, но отклонить пустой

РЕДАКТИРОВАТЬ: woops, забыл ваше состояние, если оно пустое


2

Попробуйте выполнить это в консоли браузера или в repl 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.