2010-11-15 4 views
2

J'ai une fonction d'entrée qui fait que mon formulaire sera soumis sur entrer. Le seul problème est que ma forme n'existe pas jusqu'à ce que je clique sur un bouton qui l'ajoute au corps. Y a-t-il un moyen de faire vivre ma fonction $ .Enter? Merci d'avance pour toute suggestion.comment faire une fonction en direct

//submit function 
function submit_chatbox(){ 
alert('yo'); 
} 

$.Enter('#message',submit_chatbox); 

jQuery.Enter = function(element,callback) { 
    jQuery(element).bind('keypress', function(event) { 
     var code=event.charCode || event.keyCode; 
     if(code && code == 13) {// if enter is pressed 
      callback(event.target); 
      event.preventDefault(); //prevent browser from following the actual href 
     }; 
    }); 
}; 

Répondre

5

Pour faire utiliser .live(), il ressemblerait à ceci:

jQuery.Enter = function(element,callback) { 
    jQuery(element).live('keypress', function(event) { 
     var code=event.charCode || event.keyCode; 
     if(code && code == 13) {// if enter is pressed 
      callback(event.target); 
      event.preventDefault(); //prevent browser from following the actual href 
     }; 
    }); 
}; 

Mais ... ce que vous avez prête bien à elle-même un plugin, comme ceci:

jQuery.fn.Enter = function(callback) { 
    return this.live('keypress', function(event) { 
     if(event.which == 13) { 
      callback.call(this, event); 
      event.preventDefault(); 
     }; 
    }); 
}; 

Alors vous l'appelleriez comme ceci:

$('#message').Enter(submit_chatbox); 
+0

merci beaucoup Nick, comme d'habitude vous le voyez toujours à travers et fournir une solution réalisable. – Scarface

1

L'utilisation de live au lieu de bind le fera, ce qui vous permet d'utiliser une version de jQuery qui le supporte.

Questions connexes