仅当鼠标不在输入字段上时,JQUERY 键控函数才会响应

JQUERY keyup function response only when mouse is not over input field

本文关键字:JQUERY 函数 响应 鼠标 输入 字段      更新时间:2023-09-26

我对键控功能有问题

我有一个订购表格,其中有x个项目,其中一些是分组的,例如:

项目 1 - 第 1 组项目 2 - 第 1 组

分组的项目,有 2 个输入字段,1 个隐藏,1 个可见

,我试图做的是将隐藏输入的值更改为相同的可见输入值。

我的问题是,只有当输入不再集中时,值才会改变,有什么

办法可以做到,当值在集中输入中发生变化时,它会立即改变?

这是我的做法:

    $('.item .quantity').on("change paste keyup", function(event) {
        var crr_item = $(this).parents(".item"),
            quantity = $(this).val(),
            items = crr_item.parent().children(".item"),
            group = false;
        if(crr_item.hasClass('group1'))
            group = 'group1';
        else if(crr_item.hasClass('group2'))
            group = 'group2';

        if(crr_item.hasClass('group1_hover'))
            group = 'group1';
        else if(crr_item.hasClass('group2_hover'))
            group = 'group2';
        for(var i = items.index(crr_item)-1; i >= 0; i--) {
            var item = items.eq(i);
            if(!item.hasClass(group)) break;
            item.find('.quantity').val(quantity);
            calc_sum_eu(item);
        }
        calc_sum_eu(crr_item);
        for(var i = items.index(crr_item); i < items.length; i++) {
            var item = items.eq(i);
            if(!item.hasClass(group)) break;
            item.find('.quantity').val(quantity);
            calc_sum_eu(item);
        }
    });

尝试在其上添加一个标志,以检查它是否聚焦

var isFocused = false;
$('.item .quantity').on("focus", function(event) {
  isFocused = true;
});
$('.item .quantity').on("blur", function(event) {
  isFocused = false;
});

然后只需在 keyup 事件中添加 isFocused 变量即可进行验证。