سؤال

من خلال الإشارة إلى http://jshotkeys.googlepages.com/test-static-01.html.أحاول تنفيذ هذه الأداة القوية ومواجهة بعض القضايا.

في كل مرة عند النقر فوق ctrl s، فإنه سوف ينبثق موجه النافذة يسألني عما إذا كنت أرغب في حفظ الاختبار الخاص بي

أريد أن أتجاهل مطالبة Windows.

ما أريده بسيط: 1. عندما ينقر الناس على حفظ زر / استخدام مفتاح الاختصار CTRL S من لوحة المفاتيح

  1. يحتاج البرنامج النصي إلى إجراء فحص ()

  2. إذا كان هذا صحيحا، ثم استمر في تقديم النموذج، إذا كان FALSE، ثم توقف التنبيه، يرجى إدخال السؤال، والتركيز مرة أخرى إلى txtquestion، ولا تفعل أي إجراء إضافي.

أدناه هو الكود المصدر الكامل للرجوع اليها: أدخل

<html>
<head>
    <style>
        * {font-family: Helvetica, Verdana, Arial; font-size:0.95em}
        .eventNotifier{width: 100px; float: left; color:navy; 
              border: dotted 1px navy; padding: 4px; background-color:white; 
              margin:3px}
        .dirty{border: solid 1px #0ca2ff; color:white; 
               background-color:#0ca2ff}
    </style>

    <script src="jquery-1.3.2.min.js"></script>
    <script src="jquery.hotkeys-0.7.9.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {

// غريب - وجدت التنبيه Ctrl + S لتظهر مرتين .. ؟؟ $ (window) .keypress (وظيفة (حدث (حدث) {if (event.which == 115 && Event.ctrlkey)) {تنبيه ("Ctrl + S ضغط")؛ Event.preventdefault ()؛}})؛

            jQuery(document).bind('keydown', 'Ctrl+s',
                   function(evt){ Create(); return false; });
            //jQuery(document).bind('keydown', 'Ctrl+s',
                  //function (evt){jQuery('#_Ctrl_s'); return false; });
        });

        function Create()
        {
            var f = document.frm

            if (f.txtQuestion.value.length == 0)
            {
                alert('Please enter Question.')
                f.txtQuestion.focus()
                return false
            }
            f.submit()
        }

    </script>
</head>
<body> 
    <form name="frm" method=post action="" >
      <div id="_Ctrl_s" class="eventNotifier">Ctrl+s</div>
      <input type=text name="txtQuestion" maxlength="255" 
                class="field400" value="">
      <input type=button value="Save" name="BtnSave" onclick="Create()" 
                class=text100>
    </form>
</body>
</html>

الكود هنا

هل كانت مفيدة؟

المحلول

لتجنب إظهار المستعرض حفظ كحوار، يجب عليك منع إجراء الحدث الافتراضي، مثال في مسج عادي:

$(window).keypress(function(event) {
  if ((event.which == 115 && event.ctrlKey)){
      alert("Ctrl+S pressed");
      event.preventDefault();
  }
});

نصائح أخرى

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

jQuery(document).bind('keypress', 'Ctrl+S',function (evt){ 
 //do job..
 return false
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top