简体   繁体   English

聚焦/模糊不要开火

[英]focus / blur don't fire

I'm working on a project that uses the old jQuery 1.3.2 . 我正在使用旧jQuery 1.3.2的项目中进行开发。 I need to blur input value on focus and return it (if not changed) on focusout (can't use placeholder here). 我需要blur输入值focus ,并返回它(如果没有变化)对focusout (不能使用placeholder这里)。

This is what I'm doing: 这就是我在做什么:

console.log('start');
$('input[type=text]').live('focus', function() {
    console.log('focused');
    if (!$(this).data('defaultText')) $(this).data('defaultText', $(this).val());
    if ($(this).val()==$(this).data('defaultText')) $(this).val('');
});
$('input[type=text]').live('blur', function() {
    console.log('blurred');
    if ($(this).val()=='') $(this).val($(this).data('defaultText')); 
});

I see start in the console, but then nothing on focusing the inputs. 我在控制台中看到了start ,但随后没有任何内容集中在输入上。 What should I change here? 我应该在这里改变什么?

You can use jquery bind in jquery 1.3.2 您可以在jquery 1.3.2中使用jquery 绑定

$('input[type="text"]').bind('focus',function() {
  console.log('focused'); 
 });
 $('input[type=text]').bind('blur', function() {
   console.log('blurd');
 });

Demo 演示

(function(){

    var special = jQuery.event.special,
        uid1 = 'D' + (+new Date()),
        uid2 = 'D' + (+new Date() + 1);

    jQuery.event.special.focus = {
        setup: function() {
            var _self = this,
                handler = function(e) {
                    e = jQuery.event.fix(e);
                    e.type = 'focus';
                    if (_self === document) {
                        jQuery.event.handle.call(_self, e);
                    }
                };

            jQuery(this).data(uid1, handler);

            if (_self === document) {
                /* Must be live() */
                if (_self.addEventListener) {
                    _self.addEventListener('focus', handler, true);
                } else {
                    _self.attachEvent('onfocusin', handler);
                }
            } else {
                return false;
            }

        },
        teardown: function() {
            var handler = jQuery(this).data(uid1);
            if (this === document) {
                if (this.removeEventListener) {
                    this.removeEventListener('focus', handler, true);
                } else {
                    this.detachEvent('onfocusin', handler);
                }
            }
        }
    };

    jQuery.event.special.blur = {
        setup: function() {
            var _self = this,
                handler = function(e) {
                    e = jQuery.event.fix(e);
                    e.type = 'blur';
                    if (_self === document) {
                        jQuery.event.handle.call(_self, e);
                    }
                };

            jQuery(this).data(uid2, handler);

            if (_self === document) {
                /* Must be live() */
                if (_self.addEventListener) {
                    _self.addEventListener('blur', handler, true);
                } else {
                    _self.attachEvent('onfocusout', handler);
                }
            } else {
                return false;
            }

        },
        teardown: function() {
            var handler = jQuery(this).data(uid2);
            if (this === document) {
                if (this.removeEventListener) {
                    this.removeEventListener('blur', handler, true);
                } else {
                    this.detachEvent('onfocusout', handler);
                }
            }
        }
    };

})();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM