在下面的代码中,
<form action="#" id="sampForm">
<input id='charInput' type='text'>
<p id="keyData">Key Data Here</p>
</form><br>
<script>
document.getElementById('charInput').onkeypress = f;
function f(event) {
var char = getChar(event || window.event)
if (!char) return false; // Special Key pressed
document.getElementById('keyData').innerHTML = char + " was pressed";
return true;
}
function getChar(event) {
// event.which returns the key pressed
if (event.which == null) {
// Return the char if not a special character
return String.fromCharCode(event.keyCode); // IE
} else if (event.which!=0 && event.charCode!=0) {
return String.fromCharCode(event.which); // Other Browsers
} else {
return null; // Special Key pressed
}
}
</script>
在分配回调函数f
之前,onkeypress
为null
> var obj = document.getElementById('charInput');
undefined
> obj.onkeypress
null
> Object.prototype.toString.call(document.getElementById('charInput'));
[object HTMLInputElement]
1)
对于任何HTMLInputElement
类型实例,我如何知道属性onkeypress
具有一个值为回调函数f
,其签名具有单个参数({{1} }})接收event
对象,而KeyBoardEvent
返回f
?我们有任何w3c规范参考吗?可以将多少个参数传递给回调函数true
?
2)
通常,对于任何f
类型的实例,我怎么知道像HTMLInputElement
,onfocus
,onblur
这样的属性必须有一个值,这是一个回调具有签名功能onselect
?