Pergunta

Ao se referir a http://jshotkeys.googlepages.com/test-static- 01.html I tentar implementar esta ferramenta poderosa e enfrentando algum problema.

toda vez que quando eu clico Ctrl S, ele irá aparecer uma janela de aviso perguntando-me se eu quero salvar meu testing.html

Eu quero ignorar janelas rápida.

O que eu quero é simples: 1. quando as pessoas clique no botão Salvar / uso tecla de atalho CTRL s do teclado

  1. necessidade script para fazer um Create () verificação

  2. Se for verdade, então continuar a enviar o formulário, se falsa, então alerta parada Por favor, indique questão, o foco volta para txtQuestion, e não fazer qualquer ação adicional.

Abaixo está o código fonte completo para referência: digite

<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- eu encontrei o alerta Ctrl + S para aparecer duas vezes .. ??? $ (Janela) .keypress (function (event) { if ((event.which == 115 && event.ctrlKey)) { alerta ( "Ctrl + S pressionado"); 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>

código aqui

Foi útil?

Solução

Para evitar mostrar a janela Salvar Como navegador, você deve evitar a ação de evento padrão, exemplo em jQuery simples:

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

Outras dicas

O trecho de código é ok, mas, a fim de impedir a ação padrão do navegador (como mostrar diálogo Salvar) você deve pegar o KeyPress caso (não o KeyDown) e, claro, retorno false .

jQuery(document).bind('keypress', 'Ctrl+S',function (evt){ 
 //do job..
 return false
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top