Firebug:“不应使用keyup事件的’charCode’属性。 这个价值毫无意义。“
我正在构建一个计算器,并使用以下内容:
jQuery(function($) { $('#Quantity').keyup(function() { console.log($(this).val()); }); });
Q1:keyup()是正确使用的事件吗?
Q2:为什么Firebug告诉我“不应该使用keyup事件的’charCode’属性。这个值没有意义”? 我注意到它和我在Stackoverflow中输入这个问题的做法是一样的,所以我不能做太错误的事情。
看来是因为jQuery使用自己的event
对象而不是本机浏览器,并且在创建此对象的过程中会读取事件的每个可能属性,包括charCode
:
props = [ ... "charCode" ... ] for ( var i = this.props.length, prop; i; ) { prop = this.props[ --i ]; event[ prop ] = originalEvent[ prop ]; }
Firefox正确地警告你,你不想在键盘事件的情况下读取charCode
,没有意识到你只是在复制它,而不是实际上用它做任何事情。 因此,使用jQuery keyup / keydown处理程序创建的任何页面都会发出无休止的警告。
(IMO,jQuery不应该打扰复制这个属性。在唯一的情况下你实际上想要使用它 – keypress
– 你可以只使用普通的旧的。)
1)是的,您正在使用带有keyup
的正确事件,因此您可以获得最新值。
2)你可以放心地忽略这个Firebug警告,它出现在很多很多应用程序中,并且是jQuery如何规范事件的.which
属性的结果,firebug对这个IMO应该更聪明一些。
这不是直接回答您的问题,但可能提供有用的信息。
来自quirksmode.org :
keyCode和charCode
这两个属性是keyCode和charCode。 Put(太)简单地说,keyCode说明了用户按下的实际键盘键,而charCode给出了结果字符的ASCII值。 这些信息不一定相同; 例如,小写’a’和大写’A’具有相同的keyCode,因为用户按下相同的键,但是不同的charCode,因为结果字符是不同的。
Explorer和Opera不支持charCode。 但是,它们在keyCode中提供字符信息,但只提供onkeypress。 Onkeydown和-up keyCode包含关键信息。
我只能假设如果按下不打印字符的键(如箭头键),则charCode
值“无意义”。 此外,如果用户使用非英语键盘, charCode
可能与您的预期不同。 但我不确定这一点。