2012-08-13 14 views
7

Sto scrivendo un test di unità nelle mie app Web e voglio attivare automaticamente un Immettere l'evento premuto dalla mia pagina dopo che per esempio è stato fatto clic su un pulsante di download su file di testo. Come posso farlo in jQuery o Javascript?Come posso attivare automaticamente un evento di pressione tasto invio dopo che è stata eseguita una determinata azione?

+0

è necessario attivare il tasto INVIO premuto dopo l'evento clic del mouse? – themis

risposta

7
  1. Creare una variabile che ci dice se l'utente ha fatto clic sul pulsante.

    var clicked = false; 
    
  2. Aggiungi un listener di eventi per il pulsante, in modo che quando l'utente fa clic su di essa, la variabile clicked diventerà true.

    myButton.addEventListener('click', function(){ 
        clicked = true; 
    }); 
    
  3. aggiungere un listener keypress evento:

    document.addEventListener('keypress', function(e) { 
        // `e` is the event 
    }); 
    
  4. All'interno che listener di eventi, controllare se l'utente ha cliccato in precedenza

    if(clicked) { 
        // ... 
    } 
    
  5. Se (s) ha fatto, controllare la tasto premuto. di inserire il codice chiave è 13.

    var keynum = e.keyCode||e.which; 
    if(keynum == 13) { 
        // ... 
    } 
    
  6. Se il tasto premuto è stato entrare, utilizzare

    clicked = false; 
    

    In caso contrario, una volta che l'utente fa clic con il pulsante premuto e entrare, non sarebbe necessario cliccare il pulsante di nuovo.

  7. Dopo aver eseguito il codice. Ad esempio, chiamerà la funzione f dopo 2 secondi.

    setTimeout(f, 2000); 
    

demo dal vivo

var clicked = false; 
 
document.querySelector('#btn').addEventListener('click', function(){ 
 
    clicked = true; 
 
    snippet.log("You clicked the button. `clicked` is now `true`"); 
 
}); 
 
document.addEventListener('keypress', function(e) { 
 
    if(clicked) { 
 
    var keynum = e.keyCode || e.which; 
 
    if(keynum == 13) { 
 
     clicked = false; 
 
     snippet.log("`clicked` is now `false`. Waiting 2 seconds..."); 
 
     setTimeout(f, 2000); 
 
    } 
 
    } 
 
}); 
 
function f() { 
 
    snippet.log("Function `f` executed successfully!"); 
 
}
#btn { 
 
    border: 3px solid red; 
 
    cursor: pointer; 
 
}
<div id="btn">Click me, and then press enter.</div> 
 
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --><script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

+0

malato prova questo fuori. puoi spiegare cosa sta succedendo in quel codice. Non sono un esperto di script java, quindi non conosco window.clicked o window.onclick. –

+0

è possibile aspettare un certo periodo di tempo? voglio attivarlo dopo 2 secondi perché sto aspettando la finestra di download del file. :) –

+0

fantastico. questo è quello che sto cercando. :) Grazie molto. –

2

Se si sta parlando di entrare automaticamente un Invio chiave per attivare un evento submit, è possibile utilizzare questo invece:

$("#formID").submit(); 


per attivare questo evento dopo un tasto è stato premuto, tenta questo:

$("#buttonID").click(function() { 
    $("#formID").submit(); // submits form 
}); 
+0

voglio attivarlo dopo che un pulsante è stato fatto clic. e sto usando il collegamento ipertestuale il tag BTW. –

4

Se ricevo la tua domanda giusta, questo è quello che stai cercando per

<html> 
<head> 

    <script src="http://code.jquery.com/jquery-latest.js"></script> 

    <script type="text/javascript"> 
     $(document).keydown(function(event){ 
      if(event.keyCode == 13){     
       alert("keypressed"); 
      } 
     }); 

function clickevent() 
{     
    var e = $.Event("keydown"); 
    e.which = 13; 
    e.keyCode = 13; 
    $(document).trigger(e);  
} 
</script> 

</head> 
<body id="thebody"> 
    <input type="button" onclick="clickevent()" value="click me first"> 
</body> 
</html> 
+0

Lo stesso è possibile tramite JavaScript? –

+0

Questo è meglio utilizzato a scopo di test. – lft93ryt

Problemi correlati