Apa cara terbaik untuk menguji string kosong dengan jquery-out-of-the-box?

229

Apa cara terbaik untuk menguji string kosong dengan jquery-out-of-the-box, yaitu tanpa plugin? Saya mencoba ini .

Tapi itu tidak berhasil setidaknya di luar kotak. Akan menyenangkan untuk menggunakan sesuatu yang dibangun.

Saya tidak ingin mengulanginya

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

di mana-mana jika beberapa if (isempty(a)) akan tersedia.

Martin
sumber
1
duplikat yang mungkin dari Apa cara terbaik untuk memeriksa string kosong di JavaScript?
Adriano Carneiro

Jawaban:

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

Untuk mengabaikan ruang putih untuk string:

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

Jika Anda memerlukan dukungan sebelumnya (IE8-) untuk trim(), gunakan $.trimatau polyfill .

David Hellsing
sumber
10
@CoffeeAddict string kosong falsy dalam javascript, jadi ya, ekspresi bernilai true jika a"" atau nilai falsy lainnya (null, false, undefined, 0, NaN).
David Hellsing
21
Jika Anda juga harus mencocokkan string dengan hanya spasi putih, itu ide yang baik untuk digunakanif (!$.trim(a))
Ilari Kajaste
3
Dalam pengalaman saya, sebagian besar waktu Anda ingin menjalankan tes ini, Anda juga ingin menyertakan pengujian untuk spasi putih. Karena itu adalah kasus yang biasa, OP harus memasukkan dalam jawabannya komentar dari @IlariKajaste
Bane
17
Jawaban yang diterima akan gagal ketika Anda memasukkan 0, namun akan bekerja untuk 1, 2, 3, 4 dll.
Steven
5
Bukankah if (!a.trim())agak berbahaya? Bagaimana jika atidak terdefinisi atau nol?
Timo
27

Tautan yang Anda berikan tampaknya mencoba sesuatu yang berbeda dengan tes yang Anda coba hindari berulang.

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

menguji apakah string tersebut adalah string kosong atau nol. Artikel yang Anda tautkan ke pengujian jika string seluruhnya terdiri dari spasi putih (atau kosong).

Tes yang Anda uraikan dapat diganti dengan:

if (!a)

Karena dalam javascript, string kosong, dan null, keduanya bernilai false dalam konteks boolean.

SpoonMeiser
sumber
if(!a)tidak akan gagal untuk string yang terdiri dari katakan 4 spasi? ``
KNU
@ KNU Ya, tetapi pertanyaannya tentang string kosong, dan string yang terdiri dari spasi bukan string kosong. Lihat apa yang saya tulis tentang perbedaan antara apa yang ditanyakan dan apa yang dilakukan kode tertaut
SpoonMeiser
Jawaban ini salah. Ini memperlakukan '0' seperti string kosong, padahal bukan.
John Henckel
@ JohnHenckel: Ini akan memperlakukan 0seperti string kosong, tetapi tidak "0". Saya menganggap itu yang Anda maksud? Bisa dibayangkan bahwa ini sedang digunakan dalam situasi di mana Anda tahu itu aadalah string, atau null, tapi ya. Sesuatu yang harus diperhatikan.
SpoonMeiser
25

Berdasarkan jawaban David, saya pribadi suka memeriksa objek yang diberikan terlebih dahulu jika itu adalah string. Kalau tidak memanggil objek .trim()yang tidak ada akan melempar pengecualian:

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

Pemakaian:

isEmpty(undefined); // true
isEmpty(null); // true
isEmpty(''); // true
isEmpty('foo'); // false
isEmpty(1); // false
isEmpty(0); // false
Timo
sumber
saya periksa dengan <br /> <p> </p> dari textarea dan katanya tidak kosong sebagaimana mestinya
kreamik
5

Periksa apakah data adalah string kosong (dan abaikan ruang kosong apa pun) dengan jQuery:

function isBlank( data ) {
    return ( $.trim(data).length == 0 );
}
Sjoerd Linders
sumber
5

Untuk memeriksa semua 'kosong' seperti 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;
    }
}

Gunakan kasing dan hasil.

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
Imran Ahmad
sumber
3
if(!my_string){ 
// stuff 
}

dan

if(my_string !== "")

jika Anda ingin menerima nol tetapi tolak kosong

EDIT: woops, lupa kondisi Anda jika IS IS kosong

Greg
sumber
2

Coba jalankan ini di konsol browser Anda atau di node.js.

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

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

Oleh karena itu, konstruksi percabangan yang sederhana akan cukup untuk pengujian.

if(string) {
    // string is not empty
}
Harry Love
sumber
1
lebih baik mengatakan "!! string" daripada "string? true: false" atau bahkan hanya "string".
ア レ ッ ク ス
2

Karena Anda juga dapat memasukkan angka serta string tipe tetap, jawabannya sebenarnya adalah:

function isBlank(value) {
  return $.trim(value);
}
Steven
sumber
Bukankah seharusnya seperti ini? return !!$.trim(value);
wonsuc
-1

Coba ini

if(!a || a.length === 0)
Atif Aziz
sumber
OP secara khusus menyatakan bahwa mereka mencari alternatif untuk ini.
Wayne
-4
if((a.trim()=="")||(a=="")||(a==null))
{
    //empty condition
}
else
{
    //working condition
}
Amarjeet Chaani
sumber
Jika a nullmaka a.trim()akan gagal. Ini adalah urutan yang buruk untuk memeriksa banyak hal. Dan jika Anda mengubah urutannya, jawaban Anda tidak memberikan apa pun, yang belum disarankan sebelumnya.
Mike Scotty