2011-03-25 4 views
1

J'ai plusieurs entrées, ils sont créés dynamiquementBind plusieurs entrées événement OnKeyPress

<input style="width:100%" class="fileDescription" type="text" name="' + descriptionId + '" id="' + descriptionId + '" placeholder="Write a file description, hit Enter to save" /> 

Je voudrais joindre à tous KeyPress événement ces entrées et passer ID de l'entrée. Comment faire ça? J'ai essayé d'utiliser le code ci-dessous pour attacher l'événement mais cela ne fonctionne pas. Aussi je ne sais pas comment passer l'ID du champ d'entrée à l'événement lié.

$('.fileDescription').bind('keypress', function(e) { 
      e.preventDefault(); 
      alert("Works!"); 

      }); 

Répondre

4

Essayez ceci:

$('.fileDescription').live('keypress', function(e) { 
    e.preventDefault(); 
    alert(this.id); 
}); 

Vous verrez dans l'exemple jsFiddle comment le 2ème élément qui a été ajouté dynamiquement fonctionne également.

JSFiddle Example

+1

vous pouvez simplement utiliser' this.id' –

+0

@aSeptik - Vous pouvez donc, mis à jour. Merci –

2
$('.fileDescription').bind('keydown', function(e) {   
      alert($(this).attr('id')); 
      }); 
+0

vous pouvez simplement utiliser 'this.id' –

0

Votre code fonctionne parfaitement pour moi ...

http://jsfiddle.net/Jaybles/f6urc/

+0

mais il n'est pas créé dinamically. ;) –

+0

Eh bien, je dirais que la validité de votre déclaration dépend de la façon dont vous définissez "Créé Dynamiquement". Mon code aurait certainement pu être créé dynamiquement par PHP. Si vous parlez de JS faisant le travail, alors vous avez raison et l'utilisation de '.live()' serait la bonne approche. – Dutchie432

+0

vous avez bien argumenté! ;) –

Questions connexes