Sweetalert: swal.stopLoading() dengan closeModal: false break swal

Dibuat pada 12 Okt 2017  ·  7Komentar  ·  Sumber: t4t5/sweetalert

Saat menggunakan swal.stopLoading() dengan closeModal: false , swal benar-benar berhenti berfungsi jika mencoba menekan konfirmasi lagi. Ini terjadi pada saya ketika saya menghentikan proses pemuatan ketika input SWAL gagal memvalidasi - menekan konfirmasi untuk kedua kalinya tidak lagi berpengaruh (terjebak dalam status pemuatan permanen, tetapi tidak mengaktifkan acara .then() lagi ). Pada dasarnya saya mencoba untuk meniru swal.showInputError() yang sudah usang, tetapi saya tidak bisa.

contoh:

swal({
    icon: "info",
    title: "Feedback",
    content: content, // This is an Input Form, with an element trailing that will hold errors.
    buttons: {
        cancel: "Go back",
        confirm: {
            text: "Leave feedback",
            closeModal: false
        }
    }
})
.then(function (isConfirmed) {
        if (isConfirmed) {
            var $feedbackForm = $('#js-Form'),
                feedbackLength = $feedbackForm.find('input[name="feedback"]').val().length,
                $swalErrorMsg = $('.js-swalError');

            if (feedbackLength < 5) {
                swal.stopLoading();
                $swalErrorMsg.html("Feedback needs to be at least 5 characters long!");
                $swalErrorMsg.show();
            } else {
                $feedbackForm.submit();
            }
        }
})

Komentar yang paling membantu

Memiliki masalah yang sama, juga. Dan rekan saya menemukan trik untuk menangani masalah ini. Mungkin Anda bisa mencoba:

var config = {
    icon: 'info',
    title: 'test',
    buttons: {
        cancel: {
            text: 'Go back',
            visible: true,
            value: false,
        },
        confirm: {
            text: 'Leave feedback',
            value: true,
            closeModal: false
        }
    }
};
var doSomething = () => { console.log('aaa'); };

(function trick() {
    swal(config).then(isConfirm => {
        if (isConfirm) {
            doSomething();
            swal.stopLoading();
            trick();
        } else {
            swal.close();
        }
    })
})();

Semua 7 komentar

Punya masalah yang sama..

Memiliki masalah yang sama, juga. Dan rekan saya menemukan trik untuk menangani masalah ini. Mungkin Anda bisa mencoba:

var config = {
    icon: 'info',
    title: 'test',
    buttons: {
        cancel: {
            text: 'Go back',
            visible: true,
            value: false,
        },
        confirm: {
            text: 'Leave feedback',
            value: true,
            closeModal: false
        }
    }
};
var doSomething = () => { console.log('aaa'); };

(function trick() {
    swal(config).then(isConfirm => {
        if (isConfirm) {
            doSomething();
            swal.stopLoading();
            trick();
        } else {
            swal.close();
        }
    })
})();

@ Hybridx24 inilah solusi yang saya gunakan untuk menyelesaikan masalah yang sama persis ini:

https://codepen.io/mbezhanov/pen/japOaJ

Yang ingin saya katakan adalah: jangan gunakan objek Promise yang swal() kembalikan untuk mengeluarkan permintaan AJAX Anda. Sebagai gantinya - lampirkan penangan klik khusus Anda sendiri ke tombol Kirim, dan keluarkan permintaan AJAX di penangan itu (menggunakan jQuery, Axios, atau apa pun)

Mudah-mudahan, Anda akan menemukan ini berguna.

Saya mengalami masalah yang sama juga. Adakah ide jika bug ini akan diperbaiki dalam waktu dekat?

@Dixiat Terima kasih banyak untuk proses ini. itu bekerja dengan sempurna. Ini sudah tahun 2020, dan saya harus menggali posting 2017 untuk menemukan jawaban saya untuk masalah ini. ha ha ha ha

Memiliki masalah yang sama, juga. Dan rekan saya menemukan trik untuk menangani masalah ini. Mungkin Anda bisa mencoba:

var config = {
    icon: 'info',
    title: 'test',
    buttons: {
        cancel: {
            text: 'Go back',
            visible: true,
            value: false,
        },
        confirm: {
            text: 'Leave feedback',
            value: true,
            closeModal: false
        }
    }
};
var doSomething = () => { console.log('aaa'); };

(function trick() {
    swal(config).then(isConfirm => {
        if (isConfirm) {
            doSomething();
            swal.stopLoading();
            trick();
        } else {
            swal.close();
        }
    })
})();

Terima kasih. Saya sudah pindah ke SweetAlert2. Ini bekerja jauh lebih baik dalam hal ini.

Saya memiliki masalah yang sama di SA2 =(
Saya kira saya akan santai saja karena itu tidak menyebabkan crash

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

daftspunk picture daftspunk  ·  4Komentar

yrshaikh picture yrshaikh  ·  4Komentar

blackrosezy picture blackrosezy  ·  6Komentar

Lusitaniae picture Lusitaniae  ·  4Komentar

adiwithadidas picture adiwithadidas  ·  4Komentar