【问题标题】:Set focus to field using SSJS in Xpages?在 Xpages 中使用 SSJS 将焦点设置为字段?
【发布时间】:2012-04-05 16:08:00
【问题描述】:

我正在通过提交按钮使用 SSJS 验证我的表单。为了向用户显示错误,我正在使用扩展库对话框。

如何使用 SSJS 将焦点设置到验证失败的字段?

我可以做的一件事是在对话框的“确定”按钮中使用 CSJS。我用 OK 按钮关闭它,如下所示:

var errorField = '#{javascript:viewScope.get("errorField")}';

我尝试了以下方法,但似乎不起作用。

if (errorField != null &&  errorField != "")
{   
var ef = document.getElementsByName("#{id:" + errorField + "}");
ef.focus();

}

我在进行实际验证时设置范围变量 errorField。

【问题讨论】:

  • 只是作为更新。我在上面的 if 块中添加了一个警报,它显示了范围变量的值,它确实显示了正确的值。所以只是焦点不起作用。

标签: xpages


【解决方案1】:

是的,我对丢失的冒号不好。好的,试了一下,当我分解 id 表达式时,它似乎也不适合我。

您将 viewScope 设置为错误字段的 id,您可以将其设置为:

getComponent('...').getClientId();

如果你能做到这一点,你将能够运行:

var errorField = '#{javascript:viewScope.get("errorField")}';

var ef = dojo.byId(errorField);
ef.focus();

这对我来说很好。

【讨论】:

  • 这似乎对我不起作用。你真的是说 getComponent('...').getClientId(); ? getComponent 没有这样的方法。所以我尝试了 getClientId('Field1');我在我的 SSJS 中设置 viewScope 时这样做了。我错过了什么?
  • 现在才看到这条评论。是的,我以前使用过 getComponent().getClientId()。出现在脚本编辑器中自动完成。以下网站显示了使用 getClientId('name') 的示例。 www-10.lotus.com/ldd/ddwiki.nsf/dx/…
  • 现在工作。不知道我之前做错了什么。感谢您的解决方案。
【解决方案2】:

尝试使用:

var ef = dojo.byId('#{id'+errorField+'}');
ef.focus();

getElementsByName 正在寻找具有 name="..." 的多个元素并返回一个数组。您不能将焦点设置到控件数组。

在 XPages 中所有控件都有唯一的 id,因此使用 dojo 搜索 id 将返回单个元素

【讨论】:

  • 谢谢西蒙。在 id 后添加一个 : (冒号)以使其编译后,我尝试了此操作,但没有成功。我什至用相同的代码在我的 xPage 右侧添加了一个额外的按钮,以确保扩展库对话框和我的 OK 按钮不是什么奇怪的问题。
  • 仅供参考,此控件的完整客户端 ID 为:view:_id1:_id10:_id11:_id12:ccATM1:radioGroupCMBUAction。不知道我将如何将其作为我的重点。
  • Simon 的解决方案应该有效。您是否尝试调试上述代码(使用 Firebug 设置断点)以检查代码是否被执行并具有正确的 ID?
【解决方案3】:

尝试在部分(或全部)刷新完成后设置焦点。

        <xp:eventHandler event="onClientLoad" submit="false">
        <xp:this.script><![CDATA[ var ef = dojo.byId('#{javascript:getClientId(viewScope.get("errorField"))}');
                    ef.focus();]]></xp:this.script>
    </xp:eventHandler>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多