2014-09-17 4 views
1

Je veux mettre au point dans une zone de texte chaque fois que l'utilisateur appuie sur le mot-clé "S" dans le clavier. Mais le problème est que le mot-clé "S" est également tapé dans la zone de texte (cela se produit uniquement en chrome). Comment je peux faire ceci ici est mon code.Comment faire pour mettre au point une zone de texte en appuyant sur une touche sans entrer ce mot-clé

$(document).keypress(function(event){ 
if(document.getElementById('search')!==null) 
{ 
    if(event.which==115 && event.target.nodeName=='BODY') // WHEN USER PRESS 'S' KEYWORD IN KEYBOARD ONLY 
    { 
     $('#search').focus();   
    } 
} 
}); 

Répondre

1

Utilisez event.preventDefault()

$(document).keypress(function(event){ 

    if($('#search').length) 
    { 
     console.log(1); 
     if(event.which==115 && event.target.nodeName=='BODY') // WHEN USER PRESS 'S' KEYWORD IN KEYBOARD ONLY 
     { 
      event.preventDefault(); 
      $('#search').focus();  
     } 
    } 
}); 
+0

event.preventDefault() comment je peut manquer ce merci, ça marche. – user3094147

0

vous pouvez aussi essayer

(event.keyCode==83) // 83 is keyCode for "s" 
+0

' "s" .charCodeAt (0) == 115',' "S" .charCodeAt (0) == 83' –

0

En utilisant le event.preventDefault() vous pouvez limiter la pression de touche pour mettre à jour la valeur de zone de texte. J'ai ajouté event.which == 83 en cas de casquettes est sur.

$(document).keypress(function (event) { 
     if (document.getElementById('search') !== null) { 

      if ((event.which == 115 || event.which == 83) && event.target.nodeName == 'BODY') // WHEN USER PRESS 'S' KEYWORD IN KEYBOARD ONLY 
      { 
       $('#search').focus(); 
       event.preventDefault(); 
      } 
     } 
    }); 

Vérifiez la démo pour JSFiddler DEMO

Questions connexes