在Xpages中使用SSJS将焦点设置为字段?

时间:2012-04-04 12:46:51

标签: xpages

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

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

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

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

我尝试了以下但是似乎没有用。

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

}

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

3 个答案:

答案 0 :(得分:4)

是的,我对失踪的结肠很不好。好的尝试了,当我打破id表达时,它似乎对我不起作用。

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

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

如果你可以这样做,你就可以运行:

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

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

对我来说很好。

答案 1 :(得分:3)

尝试使用:

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

getElementsByName正在查找name =“...”的多个元素并返回一个数组。你不能将焦点设置为一组控件。

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

答案 2 :(得分:1)

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

        <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>