Sweetalert: tab tidak berfungsi dalam formulir saat peringatan manis muncul

Dibuat pada 27 Jun 2015  ·  21Komentar  ·  Sumber: t4t5/sweetalert

Saya menggunakan peringatan manis dalam bentuk html yang popup pada klik tombol tetapi ketika saya mengklik tombol ok popup, indeks tab tidak berfungsi setelah itu dan saya harus mengklik setiap bidang untuk mengisinya.

Komentar yang paling membantu

@kosst Ya, solusi Anda jauh lebih baik, karena dengan solusi dari @edwin1217 tindakan tombol Enter default untuk OK dan pesan kesalahan (modal teks masukan) tidak akan berfungsi.

Di sini sekali lagi apa yang paling cocok untuk saya:

(function (){
    var close = window.swal.close;
    window.swal.close = function() {
        close();
        window.onkeydown = null;
    };
})();

Semua 21 komentar

Pemikiran yang sama terjadi pada saya.

Yup, terjadi pada saya juga. Juga, menekan enter untuk menutup pop up menghilangkan fokus dari halaman dan Anda tidak bisa fokus pada halaman lagi tanpa mengklik.

hapus acara jendela di doneFunction selesaikan ini.

swal({
  title: "Are you sure?",
  text: "You will not be able to recover this imaginary file!",
  type: "warning",
  showCancelButton: true,
  confirmButtonColor: "#DD6B55",
  confirmButtonText: "Yes, delete it!",
  closeOnConfirm: false
}, function(){

  // remove these events;
  window.onkeydown = null;
  window.onfocus = null;

  swal("Deleted!", "Your imaginary file has been deleted.", "success");
});

@fxghqc menghapus event handler di callback berfungsi untuk saya. Bisakah ini dimasukkan dalam kode utama untuk mencegah bug ini?

+1

Kapan ini akan diperbaiki?

+1

Apakah ada garpu dari bug ini yang bisa saya tangani? Saya tidak yakin bagaimana menggunakan komit @ xiaouze88 .
Saya juga mengalami masalah yang mengganggu terkait bug ini.

Bug ini masih ada. Anda bahkan dapat melihatnya di halaman demo sweetalert utama... http://t4t5.github.io/sweetalert/

Cukup klik tombol Coba Saya untuk contoh AJAX dan kemudian perhatikan bahwa tab tidak lagi berfungsi. Saya dapat melihat di debugger bahwa window.onfocus tidak dikembalikan ke kata penutup nol. Jika saya mengaturnya secara manual maka saya dapat menggunakan tab lagi. Tetapi menyetelnya ke nol dalam fungsi panggilan balik yang diteruskan ke swal() TIDAK berfungsi untuk saya. Saya mengaturnya ke nol di sana, tetapi sesuatu yang lain di dalam Sweetalert mengaturnya kembali sebelum seluruh proses berakhir. Membobol debugger beberapa detik kemudian mengonfirmasi hal ini.

Tolong perbaiki!

Saya dapat mengkonfirmasi perilaku ini juga. Ini intermiten, jenis bug terbaik...
Saya melihat acara window.onkeydown terikat ke fungsi bahkan setelah dialog ditutup... dan mungkin bahkan sebelum dialog dipicu.

Saya mengalami masalah yang sama persis juga. Saat pop-up SweetAlert ditutup, tab di formulir halaman berhenti bekerja bahkan dengan tabindex disetel.

Saya akan membuat PR besok dengan perbaikan untuk ini.
Pada Selasa, 3 Januari 2017 pukul 21:15, Neel [email protected] menulis:

Saya mengalami masalah yang sama persis juga. Saat SweetAlert muncul
ditutup, tab dalam formulir halaman berhenti bekerja bahkan dengan set tabindex.


Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/t4t5/sweetalert/issues/391#issuecomment-270197639 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AHWwZbRIQD1HLSs4WpN87HRyeBlvGgcuks5rOp43gaJpZM4FNSiU
.

Itu akan sangat bagus @EduardJS Terima kasih untuk itu.

Untuk saat ini saya menggunakan solusi dari @JustinWinthers di utas lain:

(function (){

    var _swal = window.swal;

    window.swal = function(){

        var previousWindowKeyDown = window.onkeydown;

        _swal.apply(this, Array.prototype.slice.call(arguments, 0));

        window.onkeydown = previousWindowKeyDown;

    };

})();

REF: https://github.com/t4t5/sweetalert/issues/127

@Mr-Anonim
memperbarui

var _swalclose=window.swal.close;
var _swal = jendela.swal;
jendela.swal = fungsi(){
var sebelumnyaWindowKeyDown = window.onkeydown;
_swal.apply(ini, Array.prototype.slice.call(argumen, 0));
window.onkeydown = sebelumnyaWindowKeyDown;
};
window.swal.close=fungsi(){
_swalclose.apply(ini);
};

Wow! Saya baru saja menemukan utas ini. Saya menghabiskan waktu berhari-hari untuk bertanya-tanya mengapa tab saya berfungsi dan kemudian tidak. Sekarang saya menyadari bahwa terkadang saya menggunakan sweetalert dan itulah alasannya berhenti!

Apakah ada yang masih mengerjakan perbaikan untuk ini dan apa solusi terbaik untuk mengatasinya untuk saat ini?

Sunting: baru saja melihat pesan sweetalert2 di atas. Saya tidak tahu ada versi lain, jadi saya akan mencobanya, tetapi ada banyak pekerjaan yang harus dilakukan untuk bermigrasi!

@elasticsteve Jika Anda memperhatikan utas lain di repo ini, Anda akan melihat yang ini tidak dipertahankan lagi.

Ada repo lain yang disebut SweetAlert2 , yang harus benar-benar Anda port aplikasi Anda.

Jika Anda masih ingin menggunakan versi ini, satu-satunya solusi adalah yang ini. Saya lupa membuat PR.. tidak punya cukup waktu. Solusi @ edwin1217 adalah solusi yang harus Anda

Solusi @ edwin1217 hampir sama dengan yang saya posting di utas #127 beberapa waktu lalu.

Terimakasih semuanya. Saya mencoba mem-porting ke SweetAlert2, tetapi harus menyerah. Saya tidak dapat membuat input teks sederhana dengan closeOnConfirm: false berfungsi. Setelah membuang waktu 3 jam saya kembali dan akan mencoba saran di atas.

@kosst Ya, solusi Anda jauh lebih baik, karena dengan solusi dari @edwin1217 tindakan tombol Enter default untuk OK dan pesan kesalahan (modal teks masukan) tidak akan berfungsi.

Di sini sekali lagi apa yang paling cocok untuk saya:

(function (){
    var close = window.swal.close;
    window.swal.close = function() {
        close();
        window.onkeydown = null;
    };
})();

}

Saya tahu ini sudah lama sekali, tetapi maukah Anda berbaik hati menjelaskan bagaimana saya bisa memanggil fungsi ini secara keseluruhan di fungsi lain? Di mana saya harus menempatkan cuplikan ini di pengontrol?

function(isConfirm){  //Function that triggers on user action.
        if(isConfirm){
          $scope.myData.splice(index,1);
          SweetAlert.swal("Deleted!");
        } else {
            SweetAlert.swal("Your file is safe!");
        }

mengubah -
closeOnConfirm: salah
KE -
closeOnConfirm: benar

itu saja ... itu berhasil untuk saya

Apakah halaman ini membantu?
0 / 5 - 0 peringkat