如何将焦点设置到重复控件内的编辑框?

2024-04-25

我想将焦点设置为+将光标置于重复控件中的编辑框(最后一个)。重复位于面板 (panelRep) 内。然后我在面板外面有一个按钮。

这是几乎可以工作的按钮的客户端代码。焦点已设置(字段周围的蓝色边框),但光标未放置在字段中。 用户仍必须单击该字段才能写入输入。

Example without focus:
without focus

Example with focus:
with focus

将焦点设置到最后一个编辑框的按钮的客户端代码,其中 id 包含字符串 inputKode:

try {
var el = dojo.query('div[id*="inputKode"]');
var node = el[el.length-1];
setTimeout(function() { node.focus(); }, 500);
//node.focus();
} catch (e) { } 

panelRep 的代码:

<xp:panel id="panelRep">
            <xp:repeat id="repeat1" rows="12" var="row" indexVar="idx"
                value="#{view1}" repeatControls="false">
                <xp:panel id="panelLinje">
                    <xp:this.data>
                        <xp:dominoDocument formName="frmPBudKodeVerdi"
                            var="dsdoc" action="editDocument" computeWithForm="both"
                            documentId="#{javascript:row.getUniversalID();}">                           
                        </xp:dominoDocument>
                    </xp:this.data>
                    <xp:table style="width:800.0px">
                        <xp:tr>
                            <xp:td style="width:100px">
                                <xp:inputText id="inputKode"
                                    value="#{dsdoc.KodeNr}" style="width:62px">
                                    <xp:this.attrs>
                                        <xp:attr name="tabindex"
                                            value="#{javascript:return idx + '1';}">
                                        </xp:attr>
                                    </xp:this.attrs>
                                    <xp:typeAhead mode="partial"
                                        minChars="1" var="lukey" valueMarkup="true" id="typeAhead1">
                                        <xp:this.valueList><![CDATA[#{javascript://var type = compositeData.type;
                                        return TypeAheadKode2(sessionScope.type,lukey);
                                        }]]></xp:this.valueList>    
                                    </xp:typeAhead>
                                    <xp:eventHandler event="onchange"
                                        submit="true" refreshMode="partial" refreshId="panelLinje">
                                        <xp:this.action><![CDATA[#{javascript:onChangeKode();}]]></xp:this.action>
                                    </xp:eventHandler>
                                </xp:inputText>                             
                            </xp:td>
                            <xp:td style="width:450px">
                                <xp:inputText id="inputNavn"
                                    value="#{dsdoc.KodeNavn}" style="width:440px"
                                    readonly="true">
                                </xp:inputText>
                            </xp:td>
                            <xp:td style="width:60px">
                                <xp:inputText id="inputNorm"
                                    style="width:45px" value="#{dsdoc.NormPrProd}"
                                    rendered="#{javascript:viewScope.visNorm}" readonly="true">
                                    <xp:this.attrs>
                                        <xp:attr name="tabindex"
                                            value="#{javascript:return idx + '2';}">
                                        </xp:attr>
                                    </xp:this.attrs>
                                    <xp:this.converter>
                                        <xp:convertNumber
                                            type="number">
                                        </xp:convertNumber>
                                    </xp:this.converter>
                                </xp:inputText>
                            </xp:td>
                            <xp:td style="width:50px">
                                <xp:inputText id="inputAntall"
                                    style="width:45px" value="#{dsdoc.NormAntall}"
                                    rendered="#{javascript:viewScope.visNorm}">
                                    <xp:this.converter>
                                        <xp:convertNumber
                                            type="number">
                                        </xp:convertNumber>
                                    </xp:this.converter>
                                    <xp:eventHandler
                                        event="onchange"
                                        submit="true"
                                        refreshMode="partial"
                                        refreshId="inputTimer">
                                        <xp:this.action><![CDATA[#{javascript:onChangeAntall()}]]></xp:this.action>
                                    </xp:eventHandler>
                                    <xp:this.attrs>
                                        <xp:attr name="tabindex"
                                            value="#{javascript:return idx + '3';}">
                                        </xp:attr>
                                    </xp:this.attrs>
                                </xp:inputText>
                            </xp:td>
                            <xp:td
                                style="width:50px;text-align:right">
                                <xp:inputText id="inputTimer"
                                    value="#{dsdoc.Timer}" style="width:45px;text-align:right">
                                    <xp:this.converter>
                                        <xp:convertNumber
                                            type="number">
                                        </xp:convertNumber>
                                    </xp:this.converter>
                                    <xp:this.attrs>
                                        <xp:attr name="tabindex"
                                            value="#{javascript:return idx + '4';}">
                                        </xp:attr>
                                    </xp:this.attrs>
                                </xp:inputText>
                            </xp:td>
                            <xp:td>                             
                            </xp:td>
                        </xp:tr>
                    </xp:table>
                    <xp:eventHandler event="onClientLoad" submit="true"
                        refreshMode="norefresh">
                    </xp:eventHandler>
                </xp:panel>
            </xp:repeat>
</xp:panel>

2012 年 9 月 22 日更新:

@MarkyRoden - 感谢您为我指明了正确的方向。

改进 dojo.query 选择器后,我最终得到了 1 行代码。

var el = dojo.query('div[id*="inputKode"] .dijitInputField > input').at(-1)[0].focus(); 



原帖:

我发现被设置焦点的元素是not一个输入元素。 元素 ID 开头为widget_

E.g widget_view:_id1:_id2:_id3:repeat1:8:inputKode如果重复中有 8 行

然后我发现该元素的nodeType是DIV通过查看 element.innerHTML,我发现它有多个子元素。

我尝试使用 element.querySelector 或 element.querySelectorAll,但无法让它们为该元素工作,因此我最终循环遍历 element.childNodes。 不是很漂亮,但它现在可以工作了..

我确信通过向 dojo.query 选择器添加元素或使用 jquery 可以做得更好。以后还得研究一下..

好吧,这是我在 CC 的 onClientLoad 事件中放入的代码:

var el = dojo.query('div[id*="inputKode"]');
var node = el[el.length-1];
node.focus();

var activeElementId = document.activeElement.id;
var activeElement = dojo.byId( activeElementId );
var kids = activeElement.childNodes;

for(var i=0; i < kids.length; i++)
{
    if(kids[i].className == 'dijitReset dijitInputField dijitInputContainer')
    {
    var elementDiv = kids[i];
    var elementDivKids = elementDiv.childNodes;

    for(var j=0; j < elementDivKids.length; j++)
    {
        var elementInput = elementDivKids[j];
        elementInput.focus();
    }
    } 
}

问候, 彼特

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将焦点设置到重复控件内的编辑框? 的相关文章

  • XPage:IBM OneUI 与 Bootstrap

    在不久的将来 我必须更新一个更大的 XPage 应用程序 开发时间超过三年 现在运行在Domino Server 8 5 3 FP6 to Domino Server 9 在此应用程序中我使用IBM OneUIv2 1但我不确定是否应该进一
  • 我的 xpages 上仅在午夜为用户调整日期

    我们在 xpages 中遇到了一个关于日期的非常奇怪的问题 我们的 Notesdocument 包含一个日期字段 并且该值只是一个日期 没有时间部分 在 xpage 中 我已指定将日期显示为日期 时间值 网页上的日期显示正确 但我们现在收到
  • 单击视图中的计算页面 URL 时打开空白页面(新页面)

    我有以下 viewPanel 我想当用户单击计算出的页面网址时打开一个新页面 我只是似乎不明白这一点
  • 如何在 Lotus Domino 上设置 CORS?

    我尝试通过跨域请求通过 REST 与 Domino 进行通信 但遇到了问题 我已经设置了一个 Internet 站点文档 其中包含 IP 地址 本地主机和作为主机名列出的服务器名称 该网站正在按照我在该网站上设置的重定向规则运行 我还使用以
  • 使用 SSJS 的“保存”按钮不会在 Web xpage 中打开 xe:dialog,但适用于移动 xpage

    以下保存按钮代码在移动 xpage 上运行良好 var checkBox31 com ibm xsp component xp XspInputCheckbox getComponent checkBox31 var customerID1
  • 从视图列检索数据时如何避免 64k 限制?

    我知道 SSJS 版本 DbColumn 与原始 Formula 语言版本具有相同的 64k 限制 所以到目前为止我用过NotesView getColumnValues 相反 相信在这里我不会面临这样的限制 正如昨天的紧急支持电话告诉我的
  • XPages 禁用输出标记问题

    有没有人遇到过disableOutputTag属性的问题 如果您禁用重复控件内的计算字段控件的输出标记 并且在该标记内有ssjs计算的内容 它不会计算内容 disableOutputtag 属性是否仅适用于重复控件内的静态内容 还是一个错误
  • Lotus Notes XPage 用于设计,Oracle(或其他 RDBMS)用于数据

    我计划使用 XPage 进行设计 加上 Lotus Notes Elements 来制作一个 Web 应用程序 但我不会将数据存储在 Lotus Notes 中 而是将数据存储在 RDBMS 特别是 Oracle 数据库 中 正如您所看到的
  • xpages 视图面板列多值分隔符

    视图中有一列具有多值分隔符和新行 但是当我将此视图拖放到我的 XPage 中时 作为
  • 以编程方式获取 XPage 按钮的 clientId

    当我在表单上创建提交按钮时 会在 HTML 中生成以下内容 XSP attachEvent view id1 id2 id38 id55 view id1 id2 id38 button1 onclick null true 2 view
  • 确定已定义用户的所有组

    我目前正在创建一个java方法 XPage托管bean的一部分 来检索用户 不一定是当前用户 所属的列表组 是否有任何简单的方法来检索此信息 或者我是否必须遍历所有组来检查用户 并检查这些组是否是其他组的子组 在博客文章中回答了这个问题 h
  • 如何在 XPage 中隐藏带有
  • 标记的菜单项
  • 我有一个基于这个惯例的传统菜单 ul li li ul
  • java.lang.ClassCastException: someClass 与 someClass 不兼容的含义

    我在 XPage 应用程序中偶尔遇到异常 java lang ClassCastException someClass incompatible with someClass 两个提到的类是相同的 都是用作会话bean的类 我无法用谷歌搜索
  • 从 XPages 全局删除 Dojo

    At http www dominoguru com pages 11182010085538 html http www dominoguru com pages 11182010085538 html and http dpastov
  • 将自定义控件中的编辑框动态绑定到托管 bean

    我读过许多关于在自定义控件中动态绑定字段的优秀帖子和文章 但它们都假设了文档数据源 我想允许托管 bean 数据源的可能性 我尝试将属性类型设置为com ibm xsp model DataSource or com ibm xsp ext
  • 将计算的 xpage 字段绑定到表单字段

    关于将数据绑定到表单存在很多问题 这很简单 我有一个表单 它使用多个计算字段 这些字段使用 DbLookup 提取数据 以根据用户选择的下拉菜单填充字段 问题是 没有一个计算字段将任何值保存到它所绑定的形式中 表单上保存的唯一数据是手动选择
  • 多数据库应用程序的访问控制

    我有一个 mainDB nsf 其中包含所有 XPage 设计 代理 脚本库等 用户从该数据库中选择一个应用程序 可能存在一个或多个应用数据库 每个应用程序数据库都包含应用程序的实际数据 以及在 mainDB 中的自定义控件中访问的数据的视
  • 重新初始化 JQuery 有 XPage 部分刷新更新 DOM

    我有一个来自核心控件的选项卡式面板 里面是一个
  • 如何更新数组范围变量中的值?

    我有一个存储存档的作用域变量 viewScope MY SCOPE new Array viewScope MY SCOPE push id0 0 true viewScope MY SCOPE push id1 1 false viewS
  • XPage:处理浏览器后退按钮

    我为 Notes 表单创建了一个 XPage 我添加了一个编辑按钮 用于执行一些逻辑 然后将文档模式切换为 编辑 以及一个保存并关闭按钮 用于保存文档并重定向到 Notes 视图的 XPage 这工作正常 但是当返回视图后按下浏览器后退按钮

随机推荐

  • Swift - NSDate - 删除部分日期

    我有一个以下格式的日期2015 02 22T20 58 16 0000 为了将其转换为 NSDate 我找到了以下解决方案 var df NSDateFormatter df dateFormat yyyy MM dd T HH mm ss
  • 数组仅添加重复值

    当我打印数组的内容时 它似乎会使用最后输入的命令覆盖每个元素 typedef struct int argc char argv 10 char myArray 80 size t size Command 内部主要 Command cmd
  • 谷歌采访:找到多边形的最大和[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 给定一个多
  • 如何在 SQL Server 中生成并手动插入唯一标识符?

    我正在尝试在表中手动创建一个新用户 但发现如果代码不抛出异常 就不可能生成 UniqueIdentifier 类型 这是我的例子 DECLARE id uniqueidentifier SET id NEWID INSERT INTO db
  • vue/vuetify 模态模式或最佳实践设计

    在我正在开发的应用程序中 我们有很多模态 每个模态包含少量数据 通常是 2 3 个字段 有时是复选框 列表等 问题是当组件关闭时如何从内部重置 销毁组件 造成这种情况的原因有两个 1 不必清除每个模式上的各个数据字段 2 当第二次打开模式时
  • Eclipse(在 Ubuntu 上)没有 jsp、html 和其他 Web 文件模板

    我使用 Synaptic Package Manager Ubuntu 9 10 安装了 Eclipse 但是 我的 Eclipse 没有任何 HTML 模板 在 新建 对话框中 或 JSP 模板 我该如何修复它 以便我在那里拥有一些 HT
  • Python根据for循环索引创建变量[重复]

    这个问题在这里已经有答案了 我正在尝试为 for 循环的每次迭代创建变量 对于范围 10 内的 i x i abc 这样我就可以得到 x1 x2 x3 x4 x10 都等于 abc 有人知道该怎么做吗 谢谢 你不应该这样做 将你的值存储在d
  • 使用 Base64 和 JSON 上传大图像

    我正在使用此功能将图像上传到服务器JSON 为此 我首先将图像转换为NSData然后到NSString using Base64 当图像不是很大时 该方法工作正常 但当我尝试上传 2Mb 图像时 它会崩溃 问题是服务器没有收到我的图像 即使
  • 使用 Appcompat v7 的抽屉式导航 - ?android:attr 标签的问题

    我在我的项目中使用操作栏和导航抽屉 使用 appcompat v7 和 v4 我已经添加了 appcompat v7 和资源 以下是我的导航抽屉列表的文本视图 直接取自位于以下位置的 Android 示例应用程序 创建抽屉式导航 http
  • C#:通过反射检索和使用 IntPtr*

    我目前正在编写一些代码 这些代码反映了从调用本机 dll 中编组回来的结构 某些结构包含指向以 null 结尾的指针数组的 IntPtr 字段 这些领域需要特殊处理 当反映结构时 我可以识别这些字段 因为它们是由自定义属性标记的 以下说明了
  • ant-找不到符号@Test

    我正在尝试编译以下仅包含一个函数的类 公共类测试注释 Test public void testLogin System out println Testing Login 当我将文件作为 JUNIt 运行时 它可以工作 但是当我尝试从 b
  • 计算 a*a mod n 且不溢出

    I need to calculate a a mod n but a is fairly large resulting in overflow when I square it Doing a n a n n doesn t work
  • 树莓派蓝牙4.0连接

    我正在尝试使用 CoreBluetooth 蓝牙 4 0 通过 iPhone 连接到 Raspberry Pi 我已经发现了该设备并使用以下代码发出连接请求 if peripheral self foundPeripheral NSLog
  • Javascript ResizeObserver 意外触发

    Why the ResizeObserver类总是首先执行处理程序observe 尝试在 Chrome 开发工具上执行以下代码 new ResizeObserver gt console log resize detected observ
  • 从 asp.net 中的 dataSet 获取单个值

    我正在执行查询以从 tbl message 表获取 Title 和 RespondBY 我想在对转发器进行数据绑定之前解密标题 在进行数据绑定之前如何访问标题值 string MysqlStatement SELECT Title Resp
  • jQuery 显示/隐藏/切换有效,但没有保持应有的状态 - 它恢复到原始状态

    我尝试使用 jQuery 显示 隐藏常见问题解答 这个想法是列出所有问题 只有当用户想要查看答案时 他们才会单击问题 看起来像链接 然后答案就会变得可见 它有点有效 只不过一旦单击答案就会恢复到其原始状态 在这种情况下 这意味着当我单击问题
  • 对一列进行唯一约束,排除其他列中具有相同值的行

    我想向列添加唯一键value但我必须忽略列中具有相同值的行value and header id 例如 考虑这个表 id header id value 1 1 a 2 1 a 3 2 a 因此 第 1 行和第 2 行指向同一个对象 并且唯
  • 您可以在不同的 OSGi 包中拥有 JSF 自定义组件吗?

    有人同时使用过 OSGi 和 JSF 吗 我问这个问题是因为 JSF 使用类加载器魔法来查找自定义组件 来自教程 重点是我的 这个配置文件最终会 是 META INF faces config xml 中 代表此的 jar 文件 成分 JS
  • 如何在没有 Intent 的情况下以编程方式拨打电话

    我是 Android 新手 我想在不使用intent 我知道这段代码 Intent intent new Intent Intent ACTION CALL intent setData Uri parse tel bundle getSt
  • 如何将焦点设置到重复控件内的编辑框?

    我想将焦点设置为 将光标置于重复控件中的编辑框 最后一个 重复位于面板 panelRep 内 然后我在面板外面有一个按钮 这是几乎可以工作的按钮的客户端代码 焦点已设置 字段周围的蓝色边框 但光标未放置在字段中 用户仍必须单击该字段才能写入