创建新文档时,我无法获取X页上的第一个字段(或任何字段)以获得焦点。
我已进入
dojo.query( “输入[ID $ = 'LOC1']”)[0] .focus();
脚本解释器错误,line = 1,col = 6:[ReferenceError]'找不到dojo'
我认为基本的dojo被加载了。我不明白如何加载dojo。
提供场焦点的最简单方法是什么?
答案 0 :(得分:6)
如果您将此代码添加到XPage
<xp:eventHandler
event="onClientLoad"
submit="false">
<xp:this.script><![CDATA[
try {
var input = dojo.query("input[type='text']")[0];
input.focus();
input.selectionEnd = input.selectionStart;
} catch (e) { }
]]></xp:this.script>
</xp:eventHandler>
然后第一个输入文字字段将获得焦点,字段中的文字将取消选择。
答案 1 :(得分:3)
您似乎选择了服务器端脚本事件。通常你添加一个OutputScript元素并添加这样的代码(我的头可能包含拼写错误):
XSP.addOnLoad(function(){
XSP.byId("#{id:loc1}").focus();
});
这对你有用吗?
<强>更新强>
完整示例,适用于此处:
的XPage:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom">
<xc:LayoutSample>
<xp:this.facets>
<xc:focusBaby xp:key="facetMiddle"></xc:focusBaby>
</xp:this.facets>
</xc:LayoutSample>
</xp:view>
自定义控件(您有指定的元素,我的表单中的第二个)
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
One 
<xp:inputText id="inputText1"></xp:inputText>
<xp:br></xp:br>
Two 
<xp:inputText id="inputText2"></xp:inputText>
<xp:br></xp:br>
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[XSP.addOnLoad(function(){
XSP.getElementById("#{id:inputText2}").focus();
});]]></xp:this.value>
</xp:scriptBlock>
</xp:view>
你做了什么不同的事?