如果表单中的输入错误,在执行ajax请求后,我正在尝试将此validatationTextBox聚焦,并显示一条指示消息,显示问题。
代码是:
dijit.byId("passwordField").focusNode.focus()
表单元素如validationTextBox所述。
令我更加困惑的是,在dojo 1.5之前,这段代码只是dijit.byId("passwordField").focus()
,这很好用。我该如何解决这个问题?
我也尝试过:
require(["dijit/focus"],function(focusU){
focusU.focus(dojo.byId("ID"));});
但这也不起作用。
答案 0 :(得分:2)
如果dijit.widget.focus()失败,则_FocuxMixin在启动时未正确加载。
使用任何dijit.form.Type,您应该能够通过以下方式成功获得焦点:
dijit.byId('ID').focus();
我认为你将DOM事件焦点与widget焦点处理混淆。如果您解雇widget.focusNode.focus
- 您将无法在任何浏览器中ValidationTextBox
中发送消息。
答案 1 :(得分:0)
您可以在表单标记中尝试这样的内容:
<script language="javascript" type="text/javascript">
Sys.Application.add_load
(
function () {
window.setTimeout(focus, 1);
}
)
function focus() {
if (document.getElementById('txtComm1') != null) {
if (document.getElementById('txtComm1').disabled != true) {
document.getElementById('txtComm1').focus();
}
}
}
</script>
答案 2 :(得分:0)
如果您的表单字段位于dijit/Dialog
内,Dialog
将自动关注第一个输入。您可以通过设置:
autofocus: false
在对话框上,之后,
widget.focus();
应该可以正常工作。
答案 3 :(得分:0)
这对我有用......
setTimeout(function(){
widget.focus();
}, 100);