簡體   English   中英

程序化焦點事件不會導致焦點事件處理程序觸發嗎?

[英]Programatic focus event does not cause focus event handler to fire?

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

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元素設置為hidden之前重設輸入。

這應該可以解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM