2009-09-03 8 views
0

Ce que j'essaie de faire est que lorsque la touche esc est enfoncée sur le champ de saisie de texte (id = txtSearch), du code sera exécuté.jQuery liant à un élément par l'ID

Ceci est mon code:

$(document).ready(function() { 
    $('#txtSearch').bind('keyup', function(e) { 
     var characterCode; // literal character code will be stored in this variable 
     if (e && e.which) { //if which property of event object is supported (NN4) 
      e = e; 
      characterCode = e.which; 
     } else { 
      characterCode = e.keyCode; 
     } 
     if (characterCode == 27) //if esc key 
     { 
      //do stuff 
     } 
    }); 
} 

cela ne fonctionne pas pour moi. Cependant, si je changerais cette ligne:

$('#txtSearch').bind('keyup', function(e) { 

avec:

$(document).bind('keyup', function(e) { 

tout fonctionne. Mais je ne veux pas lier le keyup avec esc au document entier ...

Toutes les suggestions sur la façon dont je peux lier le keyup le seul avec l'élément de recherche texte spécifique? (ou son div contenant ou quelque chose)

Merci!

+2

Ce que vous avez devrait fonctionner. Vous pouvez examiner '$ ('# txtSearch'). Length' pour voir si ce sélecteur correspond à des éléments. –

+1

Travaillez-vous avec asp.net? Cela gêne les identifiants d'éléments, donc vous pouvez utiliser une classe à la place. – krdluzni

Répondre

0

Je pense

$('input#txtSearch').bind('keyup', function(e) { 

est la ligne que vous recherchez.

Bonté,

Dan

0

Assurez-vous que votre HTML est un élément avec id txtSearch.

Si vous utilisez ASP.NET, vous devez changer

$('#txtSearch').bind('keyup', function(e) { 

à

$('#<%= txtSearch.ClientID %>').bind('keyup', function(e) { 

afin que jQuery obtient le plein id généré.

0

Cela a fonctionné pour moi:

$(function(){ 
    $('input').keydown(function(e){ 
     if (e.keyCode == 13) { 
      $(this).parents('form').submit(); 
      return false; 
     } 
    }); 
}); 
0

Ou qu'en utilisant:

$('input[id=txtSearch]').bind('keyup', function(e) { 

Juste un travail autour.

0

J'ai abandonné ça. Je ne peux pas sembler trouver un moyen d'attacher cet événement seulement à un élément spécifique du DOM.

Alors, voici mon travail autour de:

$(document).keyup(function(e) { 
    if (e.target.id == "txtSearch") { 
     var characterCode; // literal character code will be stored in this variable 
     if (e && e.which) { //if which property of event object is supported (NN4) 
      e = e; 
      characterCode = e.which; //character code is contained in NN4's which property 
     } 
     else { 
      characterCode = e.keyCode; //character code is contained in IE's keyCode property 
     } 

     if (characterCode == 27) //if generated character code is equal to ascii 27 (if esc key) 
     { 
      //do stuff 
     } 

    } 
}); 
0

Soit vérifier $('#txtSearch').length dans un débogueur ou tapez

javascript:alert($('#txtSearch').length); 

dans votre barre d'adresse pour vous assurer qu'il est en fait la sélection d'un élément. Sinon, vous pouvez essayer d'ajouter une classe css à votre zone de texte et d'utiliser $('.txtSearch').

Questions connexes