程序性焦点事件不会引发焦点事件处理程序

Programatic focus event does not cause focus event handler to fire?

本文关键字:焦点 事件处理 程序 事件 程序性      更新时间:2024-03-12

我正在使用一个程序化焦点事件,如下所示:

resetInput: function (array, checkbox) {
    _.each(array, function (val) {
        $A.log('input cleared, focussed, blurred for ' + val.id)
        val.value = '';
        val.focus();
        val.blur();
    });
    if (checkbox) {
        checkbox.checked = true;
    }
}

然后我捕获如下:

applyEL: function (input_element, label_element) {
    var self = this,
        $input_element = $(input_element);
    $input_element.on("blur", function () {
        $A.log('Blur Event detected:');
        if (input_element.value === '') {
            $A.log(': with input blank');
            $A.toggleClass(input_element, 'toggle_border_show');
            $A.toggleClass(label_element, 'toggle_label_show');
            $A.animate(label_element, {property: 'fontSize', time: self.P.speed});
        }
    });
    $input_element.on("focus", function () {
        $A.log('Focus Event detected - ');
        if (input_element.value === '') {
            $A.log(' - with input blank:');
            $A.toggleClass(input_element, 'toggle_border_obscure');
            $A.toggleClass(label_element, 'toggle_label_obscure');
        }
    });

当我使用键盘手动启动焦点和模糊事件监听器时,它们工作得很好。

但是程序化版本不起作用。

我注意到我的输入没有重置(事件处理程序没有正确启动),并添加到日志中以确定这一点。

注意:

我还从控制台启动了焦点和模糊事件处理程序,但没有看到任何效果。

我的人,

如果元素的显示设置为"无",则无法对其使用聚焦和模糊事件。(看起来像是一个父元素在设置这个)。

我建议您在将body元素设置为隐藏之前重置输入。

这应该能解决你的问题。