2011-10-06 2 views
0

Je ne peux pas déclencher d'événements clés sur un élément d'entrée avec jquery. Étant donné le code suivant:Les événements ne se déclenchent pas pour "entrée" dans chrome jquery

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html> 
    <head> 
     <script type="text/javascript" src="./js/jquery-1.5.1.min.js"></script> 
     <script type="text/javascript" src="./js/jquery-ui-1.8.14.custom.min.js"></script> 
     <script type="text/javascript">   


      $("#cmd").keypress(function(event) { 
       alert("keypress"); 
       if(event.which == 13){ 
        $.ajax({ 
         type: "POST", 
         url: "update", 
         data: "key=" + key + "&cmd=" + $("#cmd").val() 
        }); 
        $("#cmd").val(""); 
        $("#cmd").focus(); 
       } 
      }); 


    </script> 
     <title>BCMD</title> 
    </head> 
    <body> 
     <div id="main" style="background-color: black; color: white; width:100%; height:500px;"> 
      <input id="cmd" type="text" style="border:0;"></input> 
     </div> 
    </body> 
</html> 

Rien ne se déclenche. Des idées? Merci.

+0

les fichiers jQuery sont-ils chargés? Vérifiez à partir de l'onglet NET de firebug. Je pense que cela pourrait être le problème –

+2

Essayez d'entourer votre $ ("# cmd") ... source avec un $ (function() {}); ? –

+0

Son travail pour moi –

Répondre

3

Il vous manque la fonction $ (document) .ready. Enscapsulate votre Javascript dans $ (function() {}); pour le faire fonctionner.

<script type="text/javascript">   

     $(function() { 
      $("#cmd").keypress(function(event) { 
       alert("keypress"); 
       if(event.which == 13){ 
        $.ajax({ 
         type: "POST", 
         url: "update", 
         data: "key=" + key + "&cmd=" + $("#cmd").val() 
        }); 
        $("#cmd").val(""); 
        $("#cmd").focus(); 
       } 
      }); 
     }); 

</script> 

JQuery nécessite ce genre de code à encapsuler comme pour indiquer qu'il ne doit être exécuté lorsque le document est chargé.

+0

Ce n'est pas la "fonction d'initialisation jquery", c'est "$ (document) .prêt" http://api.jquery.com/ready/ –

+0

@kingjiv En effet, c'est! Mauvaise formulation en mon nom, mes excuses. –

+0

C'était effectivement le problème. Merci! Encore assez nouveau à jquery. – feathj

0

Vous exécutez le code avant que l'élément cmd existe. Enveloppez votre code dans document.ready:

$(function(){ 
    // your code here 
}) 

Cela attendra que le DOM soit chargé avant d'exécuter votre code.

Questions connexes