内字段标签不会在空字段上重新出现
Infield label not reappearing on empty field
我有以下代码jquery插件,它基于不久前的一个插件(此处演示:http://jsfiddle.net/3rNpb/(,它允许标签根据用户输入字段来淡入和淡出。
当用户聚焦时,标签淡出 50%,然后在模糊时又淡入。当他们开始输入时,标签会完全隐藏。然后,如果字段为空并且它们再次模糊,则标签会淡入。
问题是,当字段聚焦并且用户删除值时,它不会再次以 50% 显示标签,直到他们模糊字段(取消焦点(。
任何人都可以帮助解决这个问题吗?
谢谢
在 keydown.infieldlabel
事件处理程序中,有以下调用:
f.hideOnChange(e)
。您的hideOnChange
函数包含以下代码:
f.hideOnChange = function (e) {
if ((e.keyCode == 16) || (e.keyCode == 9)) return;
if (f.showing) {
f.$label.hide();
f.showing = false
};
f.$field.unbind('keydown.infieldlabel')
};
在我看来,函数末尾的unbind
调用将导致keydown
事件处理停止;也许您不再为退格键或删除键附加事件处理,因为事件是未绑定的。
试试这个,工作正常
<label class="placeholder" for="test">Test Label</label>
<input type="text" id="test" />
(function ($) {
$.InFieldLabels = function (b, c, d) {
var f = this;
f.$label = $(b);
f.label = b;
f.$field = $(c);
f.field = c;
f.$label.data("InFieldLabels", f);
f.showing = true;
f.init = function () {
f.options = $.extend({}, $.InFieldLabels.defaultOptions, d);
if (f.$field.val() != "") {
f.$label.hide();
f.showing = false
};
f.$field.focus(function () {
f.fadeOnFocus()
}).blur(function () {
f.checkForEmpty(true)
}).bind('keydown.infieldlabel', function (e) {
f.hideOnChange(e)
}).change(function (e) {
f.checkForEmpty()
}).bind('onPropertyChange', function () {
f.checkForEmpty()
})
};
f.fadeOnFocus = function () {
if (f.showing) {
f.setOpacity(f.options.fadeOpacity)
}
};
f.setOpacity = function (a) {
f.$label.stop().animate({
opacity: a
}, f.options.fadeDuration);
f.showing = (a > 0.0)
};
f.checkForEmpty = function (a) {
if (f.$field.val() == "") {
f.prepForShow();
f.setOpacity(a ? 1.0 : f.options.fadeOpacity)
} else {
f.setOpacity(0.0)
}
};
f.prepForShow = function (e) {
if (!f.showing) {
f.$label.css({
opacity: 0.0
}).show();
f.$field.bind('keydown.infieldlabel', function (e) {
f.hideOnChange(e)
})
}
};
f.hideOnChange = function (e) {
if ((e.keyCode == 16) || (e.keyCode == 9)) return;
if (f.showing) {
f.$label.hide();
f.showing = false
};
f.$field.unbind('keydown.infieldlabel')
};
f.init()
};
$.InFieldLabels.defaultOptions = {
fadeOpacity: 0.5,
fadeDuration: 300
};
$.fn.inFieldLabels = function (c) {
return this.each(function () {
var a = $(this).attr('for');
if (!a) return;
var b = $("input#" + a + "[type='text']," + "input#" + a + "[type='password']," + "input#" + a + "[type='email']," + "input#" + a + "[type='tel']," + "textarea#" + a);
if (b.length == 0) return;
(new $.InFieldLabels(this, b[0], c))
})
}
})(jQuery);
$("label.placeholder").inFieldLabels();
您要做的是侦听keyup
事件并检查您的input
是否在每个keyup
为空。如果是,那么您fadeIn
您的标签。
相关文章:
- MeteorJS:用户集合如何公开新字段
- 使用具有用户定义字段的新请求者创建新的Zendesk票证
- 当出现多个字段时,jquery时间条目问题
- 如何在新的Meteor Collection文档中设置服务器上的created_on字段
- 如何使用Typescript创建一个包含对象的字段的新对象
- 查找Mongodb字段中出现次数最多的单词
- 如何防止输入字段中出现单击事件角度代码
- jQuery 选择错误:添加新的选择字段并对其进行组合时出现问题
- 点击显示按钮并在关闭时隐藏搜索字段时出现问题
- 创建对象和比较字段时出现Javascript错误
- 在向流星用户添加自定义字段时出现特权问题
- 不允许在输入字段中出现空格的正则表达式
- 如何使用纯javascript防止输入字段中出现空白
- 将localStorage值传递给输入字段时出现问题
- 在jquery中使用.val()时,输入字段不出现
- 网格中的EXTJS日期字段未出现/格式化
- 在where子句中使用两个字段时出现猫鼬类型转换问题
- Mapreducting可统计可能存在或不存在的字段的出现次数
- CRM 2011:使用电子邮件正文填充后,案例的“说明”字段中出现不需要的文本
- 将多个字段合并为一个输入字段时出现的问题