Pertanyaan Javascript prompt () - membatalkan tombol untuk mengakhiri fungsi


Saya memanggil Javascript window.prompt() dan mendorong pengguna untuk mengirimkan variabel yang saya bandingkan dengan variabel lain (perlindungan kata sandi yang sangat dasar). Namun, fungsi berfungsi dengan baik jika Anda mengeklik "cancel" pada prompt() jendela, fungsi tidak hanya mengakhiri, tetapi membandingkan variabel ke string kosong, (yang pengguna memilih untuk tidak mengirimkan dengan menekan "batal" sebagai gantinya) yang mengakibatkan fungsi berlanjut ke else{ } bagian.

Pertanyaan saya adalah, bagaimana cara menghentikan fungsi saat menekan membatalkan? Saya hanya perlu tahu cara menargetkan tombol batal.

Biasanya saya hanya akan menelepon a .stop() pada click() tombol, tetapi saya tidak tahu cara menargetkan tombol batal jendela-cepat.


25
2017-10-12 17:55


asal


Jawaban:


prompt mengembalikan string jika pengguna menekan OK ('' tanpa nilai yang dikirimkan). Jika pengguna ditekan Cancel, null dikembalikan. Yang perlu Anda lakukan hanyalah memeriksa apakah nilainya null:

function doSomething() {
    var input;
    input = prompt('Do something?');
    if (input === null) {
        return; //break out of the function early
    }
    switch (input) {
    case 'fun':
        doFun();
        break;
    case 'boring':
        beBoring();
        break;
    }
}

61
2017-10-12 18:00



Anda harus secara eksplisit memeriksa null sebagai nilai kembalian (menggunakan triple-equals) dan return saat inilah hasilnya.

var result = prompt("OK?");
if (result === null) {
    return;
}

Ini memungkinkan Anda untuk membedakan dari string kosong, yaitu apa yang dikembalikan ketika pengguna mengklik OK tapi tidak masuk konten.


2
2017-10-12 17:59



Bisakah Anda periksa saja

if (prompt_responce == null)

untuk mengetahui apakah itu sudah ditutup.


1
2017-10-12 18:15



Satu masalah besar dengan penanganan hasil 'prompt' adalah Safari (setidaknya versi 9.1.2) mengembalikan "" bukannya null ketika "Batal" diklik. Ini berarti bahwa: jika (hasil == null) kembali; tidak berfungsi, dan Anda tidak dapat membedakan antara masuknya string null, dan pembatalan.


1
2017-07-22 04:47