在表单提交后将焦点设置回原位(javascript)
Set focus back after form submit (javascript)
我的表单上有一些输入字段需要在更改时提交。当它们被提交时,我失去了焦点。我想把注意力重新放在我的投入上。我想用
Event.observe(document, 'dom:loaded', $('" + focusedFieldId + "').focus());
其中focusedFieldId是已更改元素的id。有时它工作得很好,但有时我的输入值为空。当我将focusedFieldId更改为其他字段id时,它运行良好(它设置值,然后专注于字段)。问题是只有当我试图将焦点放回相同的输入时。一个重要的问题是:在值更改后,会触发一些javascript(http://www.devbridge.com/projects/autocomplete/prototype/)。在这个javascript表单提交之后,我想把焦点放回原处。我想,当dom被加载时,意味着提交结束,页面被重新加载,我已经准备好把焦点放回原处了。我在哪里犯错误?
我相信你在这里陷入了某种竞赛状态。使用prototype.js 可以观察到两个主要的、不同的"onLoad"事件
其中一个是你刚才在这里使用的:
document.observe("dom:loaded", function() { ... });
另一种是
Event.observe(window, "load", function() { ... });
浏览器加载DOM(读取:HTML)后,将立即执行第一个,加载所有内容后,将执行第二个。
如果你在上面的脚本中设置focusedFieldId
,我强烈建议你使用第二个事件观察员;即使速度较慢,它也会确保解析之前的脚本。
不过,这仍然是一个设计缺陷。我强烈建议您将所有屏幕控制器逻辑(包括变量asignment)放在第一个onLoad事件中,以更快地执行,并避免像这样的潜在竞争条件。
相关文章:
- 通过Javascript设置Telerik RadTreeView属性,如OnClientNodeExpanded
- 使用javascript设置iframe的高度
- 通过JavaScript设置表单目标
- 如何确定相对较新版本的IE的高度和宽度(IE8不喜欢从JavaScript设置这种样式吗?
- 通过JavaScript设置的表单字段的值不会作为$_POST的一部分传递给PHP脚本
- 如何在Internet Explorer中使用javascript设置cookie
- Javascript设置日期不起作用,显示错误的时间
- iOS Safari Javascript设置超时问题
- 使用Javascript设置库中图像包装器的宽度
- 如何检查日期选择器和时间选择器元素是否使用JQuery/Javascript设置
- 如何使用javascript设置元素旋转和动态观察的动画
- 在 PHP 块中使用 Javascript 设置 HTML 文本框的值(使用 echo)
- 通过javascript设置IE特定的css样式
- Javascript-设置cookie并拉入ID
- ASP从Javascript设置控件值
- 尝试使用window.innerHeight和Javascript设置图像高度
- 使用JavaScript设置整个页面的字体大小
- 使用纯Javascript设置最小高度属性
- 如何通过javascript设置支柱列表2
- 使用 JavaScript 设置 的点击