按下输入按钮时聚焦一个字段

时间:2013-06-25 13:32:57

标签: javascript jquery

所以我已经得到了一些帮助,我几乎就在那里,但我想知道当我进入一个特定的领域时,我是否有可能有一个场焦点。

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

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

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

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

3 个答案:

答案 0 :(得分: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();
    }
});

检查demo

答案 1 :(得分:1)

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

所以你有两个选项将onClick =“”添加到文本框中,或者像创建一样在创建下移动绑定。

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

            $(html).appendTo(container);

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

答案 2 :(得分: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/