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.



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 .


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.


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

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

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

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


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
}

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

Bukankah seharusnya seperti ini? return !!$.trim(value);
wonsuc

-1

Coba ini

if(!a || a.length === 0)

OP secara khusus menyatakan bahwa mereka mencari alternatif untuk ini.
Wayne

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.