如何让这个validationTextBox聚焦?

时间:2012-07-09 02:41:58

标签: javascript dojo

如果表单中的输入错误,在执行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"));});

但这也不起作用。

4 个答案:

答案 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);