0

所以我得到了一些帮助,我快到了,但我想知道当我假设我在一个特定的领域时,是否有可能有一个领域焦点。

这是我的代码:http: //jsfiddle.net/spadez/xT5X5/2/

当我在“已接受”字段中输入时,让它专注于“当前”字段。如果您首先添加一些内容,然后单击添加的字段并按 Enter,则可以看到这一点。我没有太多运气尝试了这段代码:

$(".accepted").keyup(function(e) {
    if (e.which == 13) {
        $(".current").focus();
    }
});

另外,我想知道是否有更好的方法将这些“输入”命令添加到我的代码中,因为似乎有更好的方法。

4

3 回答 3

2

代替

$(".accepted").keyup(function(e) {
    if (e.which == 13) {
        $(".current").focus();
    }
});

和:

$(document).on("keyup",".accepted",function(e) {
    if (e.which == 13) {
         $(this).closest('.copies').next().find(".current").focus();
    }
});

检查演示

于 2013-06-25T13:41:52.217 回答
1

问题是您在页面加载时设置 keyup 事件,然后动态创建文本框 - 结果是文本框未绑定到任何事件。

因此,您有 2 个选项将 onClick="" 添加到文本框或像这样在创建下移动绑定。

http://jsfiddle.net/xT5X5/4/

            $(html).appendTo(container);

            $(".accepted").keyup(function(e) {
                if (e.which == 13) {
                    $(".current").focus();
                    return false;
                }
            });
于 2013-06-25T13:38:30.937 回答
1

您需要将复制的代码部分更改为:

$('.form').on('keyup', '.accepted', function(e) {
    if (e.which == 13) {
        var line = $(this).parent(); // this targets '.line'
        //this targets line's "container", which is '.copy', then find all the .current's in the next node (.line)
        var current = $(line).parent().next().find('.current');

        //as var current returns a list with all the .current's found, even if there's only one, it returns an array of elements in case there were more, so we select the first one from the array
        current = $(current)[0];
        $(current).focus();
    }
});

说明:由于.accepted是文档加载后创建的类,绑定keyup函数时不存在

您需要使用 on() 代替,定位“.accepted”,

我已经分解了如何找到您想要的“.current”以便您理解它,但实际上您可以通过多种方式找到它。我使用了我认为更容易理解的那个,这是一个工作小提琴的链接:http: //jsfiddle.net/QaHB3/1/

于 2013-06-25T14:09:57.623 回答