Sweetalert: علامة التبويب لا تعمل في النموذج عند ظهور تنبيه جميل

تم إنشاؤها على ٢٧ يونيو ٢٠١٥  ·  21تعليقات  ·  مصدر: t4t5/sweetalert

أنا أستخدم تنبيهًا رائعًا في نموذج html وهو منبثق عند النقر فوق الزر ولكن عندما أنقر على زر موافق في النافذة المنبثقة ، لا يعمل فهرس علامات التبويب بعد ذلك ويجب علي النقر فوق كل حقل لملئه.

التعليق الأكثر فائدة

kosst نعم ، الحل الخاص بك أفضل بكثير ، لأنه مع الحل من @ edwin1217 ،

هنا مرة أخرى أفضل ما يناسبني:

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

ال 21 كومينتر

نفس التفكير يحدث لي.

نعم ، يحدث لي أيضًا. أيضًا ، يؤدي الضغط على Enter لاستبعاد النافذة المنبثقة إلى إزالة التركيز من الصفحة ولا يمكنك التركيز على الصفحة مرة أخرى دون النقر فوقها.

إزالة أحداث النافذة في doneFunction حل هذه المشكلة.

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 تعمل إزالة معالجات الأحداث في رد الاتصال بالنسبة لي. هل يمكن تضمين هذا في الكود الرئيسي لمنع هذا الخطأ؟

+1

عندما سيتم إصلاح هذا؟

+1

هل هناك أي مفترق لهذا الخطأ يمكنني التعامل معه؟ لست متأكدًا من كيفية استخدام التزام @ xiaouze88 .
أواجه مشكلات مزعجة بخصوص هذا الخطأ أيضًا.

هذا الخطأ لا يزال موجودا. يمكنك حتى رؤيته على الصفحة التجريبية الرئيسية لـ Sweetalert ... http://t4t5.github.io/sweetalert/

ما عليك سوى النقر فوق الزر Try Me للحصول على مثال AJAX ثم لاحظ أن علامة التبويب لم تعد تعمل. أستطيع أن أرى في مصحح الأخطاء أن window.onfocus لا تتم استعادتها إلى كلمات لاحقة فارغة. إذا قمت بتعيينه يدويًا ، فيمكنني استخدام علامة التبويب مرة أخرى. لكن تعيينه على قيمة خالية في وظيفة رد الاتصال التي تم تمريرها إلى swal () لا يعمل بالنسبة لي. لقد قمت بتعيينه على قيمة خالية هناك ، ولكن هناك شيء آخر داخلي لـ Sweetalert يعيده قبل انتهاء العملية برمتها. ويؤكد ذلك اقتحام مصحح الأخطاء بعد عدة ثوانٍ.

ارجو الاصلاح!

أستطيع أن أؤكد هذا السلوك أيضا. إنه متقطع ، أفضل نوع من الأخطاء ...
أرى حدث window.onkeydown مرتبطًا بالوظيفة حتى بعد إغلاق مربعات الحوار ... وربما حتى قبل تشغيل مربع الحوار.

أواجه نفس المشكلة بالضبط أيضًا. عند إغلاق النافذة المنبثقة SweetAlert ، تتوقف علامات التبويب في نموذج الصفحة عن العمل حتى مع مجموعة tabindex .

سأقوم بعلاقات عامة غدًا مع إصلاح لهذا.
في الثلاثاء ، 3 يناير 2017 الساعة 21:15 ، كتب Neel [email protected] :

أواجه نفس المشكلة بالضبط أيضًا. عند النافذة المنبثقة SweetAlert
مغلق ، تتوقف علامات التبويب في شكل الصفحة عن العمل حتى مع تعيين tabindex.

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/t4t5/sweetalert/issues/391#issuecomment-270197639 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AHWwZbRIQD1HLSs4WpN87HRyeBlvGgcuks5rOp43gaJpZM4FNSiU
.

سيكون ذلك رائعًا حقًا EduardJS شكرًا لك على ذلك.

في الوقت الحالي ، أستخدم الحل من @ JustinWinthers في موضوع آخر:

(function (){

    var _swal = window.swal;

    window.swal = function(){

        var previousWindowKeyDown = window.onkeydown;

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

        window.onkeydown = previousWindowKeyDown;

    };

})();

المرجع: https://github.com/t4t5/sweetalert/issues/127

@ السيد المجهول
تحديث

var _swalclose = window.swal.close ؛
var _swal = window.swal ؛
window.swal = function () {
var previousWindowKeyDown = window.onkeydown ؛
_swal.apply (this، Array.prototype.slice.call (arguments، 0)) ؛
window.onkeydown = previousWindowKeyDown ؛
} ؛
window.swal.close = الوظيفة () {
_swalclose.apply (هذا) ؛
} ؛

رائع! أنا فقط وجدت هذا الموضوع. قضيت أيامًا في التساؤل عن سبب عمل علامات التبويب الخاصة بي ثم لا تعمل. الآن أدرك أنني في بعض الأحيان أستخدم حلوى وهذا هو سبب توقفها!

هل لا يزال أي شخص يعمل على إصلاح هذا وما هو أفضل حل للتعامل معه في الوقت الحالي؟

تحرير: رأيت للتو رسالة sweetalert2 أعلاه. لم أكن أعلم أن هناك إصدارًا آخر ، لذا سأجربه ، ولكن هناك الكثير من العمل الذي يتعين القيام به للهجرة!

elasticsteve إذا

هناك ريبو آخر يسمى SweetAlert2 ، والذي يجب عليك حقًا نقل تطبيقاتك إليه.

إذا كنت لا تزال ترغب في استخدام هذا الإصدار ، فإن الحل الوحيد هو هذا. لقد نسيت أن أقوم بعلاقات عامة .. لم يكن لدي الوقت الكافي. حل @ edwin1217 هو الحل الذي يجب أن

حل @ edwin1217 هو نفسه تقريبًا الذي نشرته في الموضوع رقم 127 منذ فترة.

شكرا لكم جميعا. حاولت الانتقال إلى SweetAlert2 ، لكن كان عليّ أن أستسلم. لم أتمكن من إدخال نص بسيط باستخدام closeOnConfirm: false work. بعد إضاعة 3 ساعات عدت إلى الوراء وسأحاول الاقتراحات أعلاه.

kosst نعم ، الحل الخاص بك أفضل بكثير ، لأنه مع الحل من @ edwin1217 ،

هنا مرة أخرى أفضل ما يناسبني:

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

}

أعلم أنه مر وقتًا طويلاً حقًا ، لكن هل من الممكن أن تشرح كيف يمكنني استدعاء هذه الوظيفة ككل في وظيفة أخرى؟ أين يجب أن أضع هذا المقتطف في وحدة التحكم؟

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

يتغيرون -
closeOnConfirm: خطأ
إلى -
closeOnConfirm: صحيح

هذا كل شيء ... لقد نجحت معي

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات