【发布时间】:2012-03-23 22:04:11
【问题描述】:
我发现当我在“onfocus”功能的帮助下选择文本框中的文本时,我没有得到我期望的行为。
这里是演示网址:http://jsfiddle.net/BquZz/
代码副本如下:
<!DOCTYPE html>
<html>
<head>
<title>Select all</title>
<script type="text/javascript">
var text;
var log;
function select()
{
text.select();
log.innerHTML += ' - select';
}
window.onload = function() {
text = document.getElementById('text');
log = document.getElementById('log');
log.innerHTML = 'start';
text.onfocus = select;
}
</script>
</head>
<body>
<input type="text" id="text" readonly="readonly" value="hello, world">
<div id="log">
</div>
</body>
</html>
我多次重复以下实验。
- 单击文本框外的某处以模糊文本框。
- 单击文本框以聚焦文本框。
我希望每次在第 2 步结束时,都应该选择文本框中的字符串“hello, world”。然而,这不是我观察到的。在 Debian GNU/Linux (Wheezy) 上使用 Iceweasel 11.0,在替代实验结束时“hello, world”未被选中。在剩下的实验中,有时我看到字符串“hello, world”完全被选中,有时被部分选中。在 Debian GNU/Linux (Wheezy) 上使用 Chrome 18.0.1025.33 测试版,我很少得到想要的结果。大多数时候,没有选择任何内容。
我知道解决这个问题的方法。将 text.onfocus = select 更改为 text.onclick = select。使用onclick 调用的select() 函数,我得到了预期的结果。这是一个演示 URL,它使用“onclick”显示所需的结果:http://jsfiddle.net/5EZwR/
能否请您帮助我理解为什么我使用 'onfocus' 没有得到预期的结果,但使用 'onclick' 得到了它?
【问题讨论】:
标签: javascript html onclick onfocus