我有一个带有onblur事件侦听器的输入标记:
<input id="myField" type="input" onblur="doSomething(this)" />
通过JavaScript,我希望在此输入上触发模糊事件,以便它反过来调用doSomething
函数。
我最初的想法是调用blur:
document.getElementById('myField').blur()
但这不起作用(尽管没有错误)。
这样做:
document.getElementById('myField').onblur()
为什么呢?.click()
将通过onclick侦听器调用附加到元素的单击事件。为什么blur()
不能以同样的方式工作?
发布于 2011-03-07 03:23:05
与pointy所说的相反,blur()
方法确实存在,并且是w3c standard的一部分。以下示例适用于所有现代浏览器(包括IE):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Javascript test</title>
<script type="text/javascript" language="javascript">
window.onload = function()
{
var field = document.getElementById("field");
var link = document.getElementById("link");
var output = document.getElementById("output");
field.onfocus = function() { output.innerHTML += "<br/>field.onfocus()"; };
field.onblur = function() { output.innerHTML += "<br/>field.onblur()"; };
link.onmouseover = function() { field.blur(); };
};
</script>
</head>
<body>
<form name="MyForm">
<input type="text" name="field" id="field" />
<a href="javascript:void(0);" id="link">Blur field on hover</a>
<div id="output"></div>
</form>
</body>
</html>
请注意,我使用了link.onmouseover
而不是link.onclick
,因为否则单击本身就会移除焦点。
https://stackoverflow.com/questions/5212651
复制相似问题