我正在使用SSJS从提交按钮验证我的表单。要向用户显示错误,我正在使用扩展库对话框。
如何使用SSJS将焦点设置为字段验证失败?
我可以做的一件事是在对话框的OK按钮中使用CSJS。我按下OK按钮将其关闭,如下所示:
var errorField = '#{javascript:viewScope.get("errorField")}';
我尝试了以下但是似乎没有用。
if (errorField != null && errorField != "")
{
var ef = document.getElementsByName("#{id:" + errorField + "}");
ef.focus();
}
我在进行实际验证时设置范围变量errorField。
答案 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>