JQuery - проблема с горячими клавишами и Windows - PullRequest
1 голос
/ 13 июля 2009

Ссылаясь на http://jshotkeys.googlepages.com/test-static-01.html Я пытаюсь реализовать этот мощный инструмент и сталкиваюсь с какой-то проблемой.

каждый раз, когда я нажимаю Ctrl S, появляется всплывающее окно с вопросом, хочу ли я сохранить свой testing.html

Я хочу игнорировать приглашение Windows.

То, что я хочу, просто: 1. когда люди нажимают кнопку сохранения / используют сочетание клавиш ctrl s на клавиатуре

  1. скрипт должен выполнить проверку Create ()

  2. если true, тогда продолжить отправку формы, если 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 появляется дважды .. ??? $ (окно) .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>

код здесь

Ответы [ 2 ]

3 голосов
/ 13 июля 2009

Чтобы не отображать в браузере диалоговое окно «Сохранить как», необходимо предотвратить действие по умолчанию для события, например, в простом jQuery:

$(window).keypress(function(event) {
  if ((event.which == 115 && event.ctrlKey)){
      alert("Ctrl+S pressed");
      event.preventDefault();
  }
});
2 голосов
/ 29 сентября 2009

Ваш фрагмент кода в порядке, но для предотвращения действий браузера по умолчанию (например, при отображении диалогового окна «Сохранить») необходимо перехватить событие KeyPress (не KeyDown) и, конечно, вернуть false .

jQuery(document).bind('keypress', 'Ctrl+S',function (evt){ 
 //do job..
 return false
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...