سؤال

أنا أستخدم القطعة الحوار JQuery لعرض مربع مشروط. ومع ذلك، عند الضغط على F5، في حين أن المشروط مفتوح لا يحدث أي تحديث. اي فكرة؟

تحديث مثير للاهتمام:

جرب هذا العرض التوضيحي: http://jqueryui.com/demos/dialog/#modal-message.الآن عندما يكون التركيز على زر "موافق"، يعمل التحديث (F5)، ولكن عندما لا يكون الزر التركيز، فلا يحدث ذلك.

تحديث 2.

يمكننا في الواقع إضافة أي نوع من التحكم في مربع الحوار، وضبط الطول والعرض إلى 0 CSS وتعيين التركيز عليه للحصول على عملية التحديث. هذا ليس هو أفضل حل رغم ذلك. ما زلت أحاول الحصول على عمل جائز.

تحديث 3.

يبدو أن ما يلي يعمل الآن:

$(document).keydown(function(e)
{
    if (e.which == 116) // key code of the F5 button
    {
        document.location.reload();
     }
}); 
هل كانت مفيدة؟

المحلول

يبدو أن هذا مشكلة شائعة ولم أر إجابة مرضية. هناك عدد قليل من الأسئلة المماثلة حول فائض المكدس وأفضل إجابة رأيتها هي التقاط المفاتيح وتشغيل الإجراء بنفسك (كان ذلك للدخول الذي يؤدي إلى تشغيل زر، لذلك قد يكون F5 للتحديث أكثر صعوبة) لقد رأيته بنفسي مشروع أعمل فيه أيضا.

أظن أن إعداد مشروط إلى خطأ يمكن أن يساعد، لكنني لم أحاول ذلك بعد.

يحرر:

لقد وجدت هذا على الخط 539 من ui.dialog.js:

events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),

إن إزالة Keydown و KeyPress من هناك يبدو أنه يسمح بمفاتيح المتصفح العادية للعمل. الآن لي يبدو وكأنه هذا:

events: $.map('focus,mousedown,mouseup,click'.split(','),

لا أعرف الوظيفة التي كنت أزالتها عن طريق القيام بذلك. يبدو أن الأحداث المكان الوحيد المستخدمة هي على الخط 549:

$(document).bind($.ui.dialog.overlay.events, function(event) {
    var dialogZ = $(event.target).parents('.ui-dialog').css('zIndex') || 0;
    return (dialogZ > $.ui.dialog.overlay.maxZ);
});

سيكون من الجيد الحصول على هذا ثابت في الإصدار الرسمي إذا كان ذلك ممكنا.

نصائح أخرى

هل يضفي مربع الحوار على مفتاح F5 عن طريق التقاط حدث KeyPress وإيقاف انتشاره ل "F5"؟

تحقق من التعليمات البرمجية للقبول KeyPress من هذا النوع. هذا من شأنه أن يفسر الكثير!

كان لدي مشاكل مماثلة، لكنني اكتشفت أنني وضعت في "عودة كاذبة؛"، والتي كانت إيقاف جميع المفاتيح الأخرى المسجلة. على سبيل المثال، ستتوقف "عودة False" أدناه عن جميع المفاتيح الأخرى (مثل F5) التي يتم التعرف عليها باستثناء xxx و yyy.

$(document).keydown(function(e){
if (e.keyCode == xxx) {/*do something*/}
if (e.keyCode == yyy) {/*do something*/}
return false;
});

لذلك فقط اخراج "عودة كاذبة".

الحل سهل، عليك فقط التركيز على عنصر نموذج في مربع الحوار مشرفي الخاص بك. المزيد من التفسير على هذا حلقة الوصل :

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top