关注克隆行后的第一个输入
Focus on first input after row is cloned
所以我很确定我做的每件事都是对的,但我可能在某个地方错过了某个事件。
这是我得到的。我有一个表,它充满了一行输入,只有一行可以开始。共有四列,在每行的第四列上,我附加了focusout
事件。在focusout
上,克隆最后一行并添加新行,新行的第一个输入是焦点,这样他们就可以制表并继续。
没有发生的是第一个输入没有得到焦点。所以我想弄清楚为什么会发生这种情况。
我有一个小提琴的链接,我的代码在下面。感谢您提前提供的帮助!
jQuery
$(function(){
var $lastRow = $('#testTable').find('tr:last');
var $tbody = $('#textTabl').find('tbody');
var $lastCell = $('#testTable').find('tr:last').find('td:last').prev().find('input');
$($lastRow).find("td:first > input").focus();
$('body').on('focusout',$lastCell,function(){
var $newRow = $($lastRow).clone(true, true);
$($lastRow).addClass('last');
$($newRow).insertAfter($lastRow);
$lastRow = $('#testTable').find('tr:last');
$($lastRow).find("td:first > input").focus();
});
});
小提琴
http://jsfiddle.net/dh0kxtLv/1/
编辑&更新
目前正在使用上面的新代码在我的fiddle中进行实验,但它创建了一种奇怪的行为,其中唯一获得焦点的单元格是第一个单元格,如果我试图将焦点向外聚焦,它会复制行并将焦点集中在下一个第一个单元格上。所以它有点工作,但仍然失败
我认为您遇到的问题是最后一个单元格是文档中最后一个可聚焦的元素。因此,当focusout事件被触发时,焦点已经离开文档,这将使您无法聚焦任何元素。
使用原始代码,只需在表下添加一个不可见的可聚焦元素就可以避免这个问题:
http://jsfiddle.net/dh0kxtLv/6/
注意表后包含<div tabindex='0'></div>
。
对于许多代码,只需使用:
$(function(){
$('body').on('focusout','#testTable input:last',function(){
var el=$(this);
el.closest('tr').clone().insertAfter(el.closest('tr'))
el.closest('table').find('tr:last input:first').focus();
})
});
相关文章:
- NodeJS readline有时会打印回第一个输入行(但并不总是,看起来是随机的)
- 将焦点设置在下拉切换的角度 js 上的第一个输入字段上
- 只能使用第一个输入框输入注释.他们不为其余的工作
- 单选按钮仅显示第一个输入,如何获得所需的输入
- 将焦点设置在带有错误消息的第一个输入元素上,并将包含它的 TabStrip 选项卡设置为活动状态
- Javascript onclick 将第二个输入框的值更改为与第一个输入框的值相同
- 填充 HTML,选择“使用第一个输入标记”
- 如何聚焦对话框中的第一个输入框
- Javascript只验证我的第一个输入
- 如何在用户完成第一个输入文本的键入后设置和聚焦最后一个输入文本
- DurandalJs:一种通用解决方案,用于将焦点放在组合视图上的第一个输入元素上
- 从具有特定类的第一个输入中获取父窗体元素
- WebBrowser注入Javascript将焦点设置为第一个输入框
- 选择第一个输入,但不要't选择类型=隐藏
- 关注克隆行后的第一个输入
- 为什么所有图像都更改为第一个输入
- 检查第一个输入
- 我在html中有两个输入字段,我在想如何将第一个输入字段的值自动转换为下一个输入字段
- jQuery根据第一个输入的文本框值填充数组命名的表单字段
- 只有在没有输入集中的情况下,才将第一个输入集中在负载上