javascript - $(document).on ('focus' 或 $(document).bind ('input' ,不在动态添加的行上触发?

标签 javascript jquery

我使用了 $(document).on('focus' 或 $(document).bind('input','input:text' ) 所以我的方法自动更改 table1 中的重复输入值通过(按键)到表2,但如果用户更改动态添加到表中的输入(从新行),我的代码不会触发。

发生这种情况,例如,单击“添加行”按钮,编辑新的“Apple”字段,并看到这不会更改 table2 上重复的“Apple”。

请参阅 FIDDLE用于演示。

$("input:text").each(function () {
    var elem = $(this),
        oldValue;
       $('input:text').trigger('focus');
    $(document).on('focus', 'input:text', function () {
        elem.data('oldVal', elem.val());
        elem.data('oldLen', elem.data('oldVal').length);
    });
    $(document).bind('input', 'input:text', function (event) {
        oldValue = elem.data('oldVal');
        elem.data('oldVal', elem.val());
        if (elem.val().length - elem.data('oldLen') > 1) {
            alert('Most certainly pasted');
        }
        elem.data('oldLen', elem.data('oldVal').length);
       foo(oldValue,elem.val());
    });
});
$("input").blur(); 

最佳答案

.bind() 不接受选择器参数,只有 .on() 接受。如果要绑定(bind)到动态添加的元素,则需要使用 .on()

$(document).on('input', 'input:text', function ...);

Corrected fiddle

另一个问题是您正在使用 $("input:text").each()。这只会处理页面加载时存在的元素。您不需要该循环,只需正常绑定(bind)事件处理程序即可。您不需要外部处理程序中的变量 elemoldValue;在处理程序中,$(this) 是触发事件的元素,您可以从 .data() 获取 oldValue

$(document).on('focus', 'input:text', function () {
    var elem = $(this);
    elem.data('oldVal', elem.val());
    elem.data('oldLen', elem.data('oldVal').length);
});

$(document).on('input', 'input:text', function (event) {
    var elem = $(this);
    var oldValue = elem.data('oldVal') || '';
    elem.data('oldVal', elem.val());
    if (elem.val().length - oldValue.length > 1) {
        alert('Most certainly pasted');
    }
    elem.data('oldLen', elem.data('oldVal').length);
    foo(oldValue, elem.val());
});

关于javascript - $(document).on ('focus' 或 $(document).bind ('input' ,不在动态添加的行上触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28422338/

相关文章:

javascript - 将返回数据放入resolve函数中

jquery checkbox val() 总是返回

javascript - JavaScript 计算器中只有除法按钮可以正常工作。 "Cannot read property ' toString' of undefined“其他运算符的错误

javascript - Google App Engine,使用 Jquery 和 Python 提供文件,返回 2 个相同的文件而不是 1 个

javascript - 在 JavaScript 中根据长度将字符串转换为一系列下划线

javascript - 如何停止在 hubspot 上提交表单?

javascript - 货币数据表格式

javascript - Angular UI 路由器 : where should I be changing state? Controller ?服务?事件监听器?

javascript - fadeIn li 一一

javascript - 防止使用 iOS 返回按钮提交表单