所以我很确定我做的一切都是正确的,但我可能在某个地方或其他地方错过了一个事件。
这就是我所拥有的。我有一个表,它充满了一行输入,只有一行开始。有四列,每行的第四列我附加了$("textarea").blur(function() {
$.post("updatethought.php", {thought:$("textarea").val()});
});
事件。在focusout
克隆最后一行并添加一个新行,新行的第一个输入是焦点,这样他们就可以选中并继续。
没有发生的事情是第一个输入没有得到关注。所以我想弄清楚为什么会这样。
我有一个小提琴的链接,我的代码如下。谢谢你提前帮忙!
的jQuery
focusout
拨弄
http://jsfiddle.net/dh0kxtLv/1/
EDITS& UPDATES
目前使用上面的新代码在我的小提琴中进行实验,但它创造了一种奇怪的行为,其中唯一获得焦点的单元格是第一个,如果我尝试集中注意力,它会重复行并重点关注下一行第一个细胞。所以它有点工作但仍然失败
答案 0 :(得分:3)
我相信您遇到的问题是最后一个单元格是文档中的最后一个可聚焦元素。因此,当焦点输出事件被触发时,焦点已离开文档,这将删除您聚焦任何元素的能力。
使用原始代码,只需在表格下方添加一个不可见的可聚焦元素即可避免此问题:
http://jsfiddle.net/dh0kxtLv/6/
请注意表格后面包含<div tabindex='0'></div>
。
答案 1 :(得分:2)
要使用更多代码,只需使用:
$(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();
})
});