动态输入字段的实时焦点问题

时间:2012-02-17 01:45:47

标签: jquery events focus live

我正在尝试制作动态输入字段解决方案,类似于我的dynamical select rows方法。

这个想法很简单。总会有一个额外的领域。因此,当最后一个字段处于焦点时,它将克隆它并将其附加到包装器。

My current code .focus()一起使用,因此不是动态的。但是,.live('focus', function () {}) doesn't。此外,“实时更改”或“实时焦点”不起作用。

这似乎是一个非常奇怪的问题,因为它已在this question中清除,因此从版本1.4开始应该支持“实时焦点”。但它显然不起作用。大多数其他问题都有非常本地化的解决方案,具有替代功能。

这是我的知识结束的地方,我没有更多的想象力,替代解决方案。

PS:如果这个想法完全破灭,那么改变事件触发器将是另一种选择。但是,选择和/或刻度输入不是“实时更改”吗?

2 个答案:

答案 0 :(得分:1)

无法说明.live失败的原因(示例失败代码会很好),但为什么不在克隆过程中将调用添加到.focus?在将新字段添加到DOM之后,这将是微不足道的。不确定“动态”在这种情况下意味着什么,但确实听起来就像你需要的那样。使用这种技术在过去实现了类似的表单元素,效果很好。

答案 1 :(得分:1)

所以,问题毕竟不是直接在实时焦点功能中,而是获得正确的最后一个字段。代码不够动态,无法真正重新计算当前最后一个代码。然而,我的某些部分,.live()照顾一切,但事实并非如此(不要在疲倦时编码!)。

所以,当我手动将实时函数选择器更改为.dynamicalfields_wrapper input:last时,它运行正常。所以我修改了我的代码以使其更加动态,但是使用了全局jQuery函数的包装器选择器。

(function ($) {
    $.fn.DynamicalFieldsUpdater = function () {
        return this.each(function (i, wrapper) {
            $(wrapper).find('input:last').css('background', 'red').live('focus', function (i, last) {
                $(wrapper).append($(this).clone().val(''));
            });
        });
    };
})(jQuery);
$('.dynamicalfields_wrapper').DynamicalFieldsUpdater();

[View output]

按需工作。也适用于变更,只是不是“更改” - 更改,而是keypress