为什么onload焦点不适用于此脚本?

时间:2011-04-14 14:47:23

标签: javascript forms focus onload

这是我的表格样本。当页面加载时,焦点必须在'fbox'上,但它起作用,我不明白为什么。表格包含一个niceditor,但我不认为这是问题

<html>
<head></head>
<body onload="document.form.fbox.focus();">
<body>
<form method='post' action='' name='form' >
Headline <input name='fbox' type='text' class='form' id='box' autocomplete='off' size='80'><br>
Your text</font><br><script type="text/javascript" src="nicEdit.js"></script><script type="text/javascript">bkLib.onDomLoaded(function() { nicEditors.allTextAreas() });</script>
<textarea name="description" style="width: 100%; height:200px;"></textarea></p>     
<p><select name='catg' >
<option value='' selected >Select category</option>
</select>
<input type="submit" id='button' name="Submit" value="Submit" class="button"></form>
</body></html>

感谢

2 个答案:

答案 0 :(得分:1)

你有两个正文标记。我建议摆脱其中一个,看看是否有帮助。

在该代码中间还有一个迷路的关闭</font>标记。许多人试图安排他们的标记,以便它易于阅读和查看文档的结构。您可能想要探索这种做法。

另一种可能性是你的“nicEdit”插件没有执行“.focus()”调用。尝试解决这个问题,看看焦点是否有效(作为实验)。如果发生了这种情况,那么你可以在nicEdit代码完成后进行“focus()”调用:

bkLib.onDomLoaded(function() {
  nicEditors.allTextAreas();
  document.form.fbox.focus();
});

(这是对现有<script>块中代码的修改。)

答案 1 :(得分:0)

你有两个身体元素。那不行。

脚本从上到下运行,因此在页面的其余部分呈现之前,您将触发“onload”。当事件触发时,您尝试关注的元素可能不存在。

有很多方法可以解决这个问题。 jQuery有一个方便的方法,等待DOM准备好。

一种简单的方法就是在脚本块中从页面的底部运行脚本。

<script type="text/javascript">
document.form.fbox.focus()
</script>