1

このリンク を参照して、この強力なツールを実装しようとしましたが、いくつかの問題に直面しています。

をクリックするたびにCtrl S、testing.html を保存するかどうかを尋ねるウィンドウ プロンプトが表示されます。

Windowsプロンプトを無視したい。

私が欲しいのは簡単です:

  1. 人々が保存ボタンをクリックしたとき/ctrl sキーボードからショートカットキーを使用したとき

  2. Create()スクリプトはチェックを行う必要があります

  3. true の場合はフォームの送信を続行し、false の場合は alert を停止Please enter questionし、フォーカスを に戻し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() {

//weird- I found the alert Ctrl+S to appear twice.. ???
$(window).keypress(function(event) {
 if ((event.which == 115 && event.ctrlKey)){
     alert("Ctrl+S pressed");
     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>

コードはこちら

4

2 に答える 2

2

コード スニペットは問題ありませんが、既定のブラウザー アクション ([保存] ダイアログの表示など) を防止するには、KeyPressイベント (KeyDown ではなく) をキャッチし、もちろんfalse を返す必要があります。

jQuery(document).bind('keypress', 'Ctrl+S',function (evt){ 
 //do job..
 return false
});
于 2009-09-29T08:52:44.477 に答える