Question

En se référant à http://jshotkeys.googlepages.com/test-static- 01.html J'essaie de mettre en œuvre cet outil puissant et face à une question.

à chaque fois quand je clique sur Ctrl S, éjetera une invite de fenêtre me demandant si je veux sauver mon testing.html

Je veux ignorer les fenêtres rapides.

Ce que je veux est simple: 1. lorsque les utilisateurs cliquent bouton / utilisation raccourci clavier Ctrl s de sauver keyboard

  1. Script besoin de faire Create () vérification

  2. si cela est vrai alors continuer à soumettre le formulaire, si elle est fausse, puis arrêtez alerte S'il vous plaît entrer question, focus à txtQuestion, et ne fait aucune autre action.

Voici le code source complet de référence:     entrez

<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- j'ai trouvé l'alerte Ctrl + S apparaisse deux fois .. ??? $ (Fenêtre) .keypress (function (event) {   if ((event.which == 115 && event.ctrlKey)) {       alert ( "Ctrl + S enfoncée");       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>

code ici

Était-ce utile?

La solution

Pour éviter d'afficher le navigateur de dialogue Enregistrer sous, vous devez empêcher l'action d'événement par défaut, par exemple dans jQuery simple:

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

Autres conseils

extrait de code est correct, mais afin d'éviter que l'action par défaut du navigateur (comme montrant boîte de dialogue Enregistrer) vous devez attraper le KeyPress événement (pas KeyDown) et bien sûr return false .

jQuery(document).bind('keypress', 'Ctrl+S',function (evt){ 
 //do job..
 return false
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top