2010-11-15 45 views
2

我有一个输入功能,这使得我的表单将提交输入。唯一的问题是我的表单不存在,直到我点击一个将它附加到主体的按钮。有没有办法让我的$ .Enter功能生活?在此先感谢您的任何建议。如何使功能生活

//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 2010-11-16 02:41:37

1

只需使用live而不是bind就可以了,因为您使用的是支持它的jQuery版本。