2010-06-19 59 views
1

对于在HTML输入标签中捕获ENTER键时,我对“最佳实践”有点好奇。在IE中,这很容易。当按下回车键时,window.event.keyCode将会是13,而且非常简单。在所有其他浏览器中,一个参数对象被传递给函数。但是,这似乎基本上会迫使您将函数处理程序延迟绑定到该对象。你可以这样做:使用Javascript捕获onkeypress中的某些keyCode的最佳实践

myInput.onkeypress = function (args) 
{ 
    window.alert(args.keyCode); 
}; 

不过,如果你想做的事:

<input onkeypress="checkEnter()" /> 

然后基本上checkEnter()将通过一个匿名函数(这在理论上将有争论的对象)中调用这将然后调用没有参数的checkEnter。我想你可以做一些古怪的完全一样:

<input onkeypress="checkEnter(arguments)" /> 

我还没有试过,但我认为它可以工作。看起来,这种设计基本上说后期绑定是陷印重点印刷机的唯一合理方法。我不以任何方式对IE的爱好者,但在我看来,IE得到了这一个权利,他们的设计是优越的。

我错过了什么吗?

回答

1

作为一般规则,您不应该在HTML标签中指定JavaScript函数。让JavaScript代码定义JavaScript需要做什么,并让HTML完全不知道JavaScript的存在。

对于事件处理函数,这确实意味着在脚本中绑定函数,而不是在HTML标记参数中。

+0

是的,这几乎是我想的。它只是有时我有服务器端HTML生成标签与50复选框,我希望他们每个人都有一个在线处理程序。后期绑定的处理程序意味着一个for循环附加每一个.. FYI,我已经使用jQuery和喜欢它,我也喜欢雅虎的YUI图书馆太多..这两个使这个东西更容易。感谢您的回复。 – Mike 2010-06-20 00:54:38

0

最好的做法是使用你所谓的后期绑定。此外,至少在理论上,您应该使用addEventListener而不是onkeypress。

另一种方法是使用某些库绑定事件,如jQuery

+0

和IE中的attachEvent ... – 2010-06-19 16:44:55

0

看看如何用jQuery做到这一点。

javascript/jQuery的另一个强大功能是,您可以使其不显眼,因此您可以将脚本与HTML完全分开,使浏览器更具可读性并且可以缓存javascript。

Grz,Kris。

+1

关于不显眼的JavaScript:这不是jQuery的功能,您也可以使用原生JavaScript来做到这一点。 – 2010-06-19 16:45:44

+0

是的,我知道。嗯,再次读完这句话后,看起来确实只是jQuery的一个特性。不是以这种方式表述它可以被解释为这样的意图。 – XIII 2010-06-19 16:48:55