2010-11-15 2 views
2

У меня есть функция ввода, которая делает ее так, чтобы моя форма была отправлена ​​на вход. Единственная проблема заключается в том, что моя форма не существует, пока я не нажму кнопку, которая добавляет ее в тело. Есть ли способ сделать мою функцию $ .Enter вживую? Спасибо заранее за любые предложения.Как сделать функцию live

//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 
     }; 
    }); 
}; 

ответ

5

Чтобы сделать это с помощью .live(), это будет выглядеть следующим образом:

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 
     }; 
    }); 
}; 

Но ... то, что у вас есть придает ему себя хорошо плагином, например:

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

Тогда вы бы назвали это следующим образом:

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

благодарит много Ник, как обычно, вы всегда видите это и обеспечиваете работоспособное решение. – Scarface

1

Только с использованием live вместо bind это сделает, если вы используете версию jQuery, которая ее поддерживает.