var default_input_value = null;
jQuery('body').on('focus focusout', 'input[type="text"]', function(event){
if(event.type === 'focus'){
default_input_value = jQuery(this).val();
jQuery(this).val('');
}else if(event.type === 'focusout')
if(jQuery(this).val().length === 0)
jQuery(this).val(default_input_value);
}
);
此代码根本不响应该事件。
附:
重要的是会有input[type="text"]
,因为jQuery focus
在某些情况下checkbox
也会触发....
答案 0 :(得分:19)
在.on()
jquery文档下,有一个描述:
W3C指定focus
和blur
事件不冒泡,但jQuery定义了冒泡的跨浏览器focusin
和focusout
事件。当focus
和blur
用于附加委托事件处理程序时,jQuery会映射名称并分别将其作为focusin
和focusout
传递。为保持一致性和清晰度,请使用冒泡事件类型名称。
希望这会有用。
你可以试试这段代码:
var default_input_value = null;
jQuery('body').on('focusin focusout', 'input[type="text"]', function(event){
if(event.type === 'focusin'){
default_input_value = jQuery(this).val();
jQuery(this).val('');
}else if(event.type === 'focusout'){
if(jQuery(this).val().length === 0)
jQuery(this).val(default_input_value);
}
});