DA.*_*DA. 22 javascript jquery onblur
我有一个带有onblur事件监听器的输入标签:
<input id="myField" type="input" onblur="doSomething(this)" />
Run Code Online (Sandbox Code Playgroud)
通过JavaScript,我想触发此输入上的模糊事件,以便它反过来调用该doSomething
函数.
我最初的想法是调用模糊:
document.getElementById('myField').blur()
Run Code Online (Sandbox Code Playgroud)
但这不起作用(虽然没有错误).
这样做:
document.getElementById('myField').onblur()
Run Code Online (Sandbox Code Playgroud)
这是为什么?.click()
将通过onclick监听器调用附加到元素的click事件.为什么不blur()
以同样的方式工作?
Poi*_*nty 29
这个:
document.getElementById('myField').onblur();
Run Code Online (Sandbox Code Playgroud)
因为你的元素(the <input>
)有一个名为"onblur"的属性,其值是一个函数.因此,你可以调用它.但是,您并没有告诉浏览器模拟实际的"模糊"事件; 例如,没有创建事件对象.
元素没有"模糊"属性(或"方法"或其他),所以这就是为什么第一件事不起作用.
Eli*_*ing 11
与尖锐的说法相反,该blur()
方法确实存在并且是w3c标准的一部分.以下exaple将适用于每个现代浏览器(包括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>
Run Code Online (Sandbox Code Playgroud)
请注意,我使用link.onmouseover
而不是link.onclick
,因为否则点击本身将删除焦点.
归档时间: |
|
查看次数: |
110800 次 |
最近记录: |