我正在尝试让所有textareas删除焦点上的默认文本,除了类“预填充”。 但问题是“预填充”类的文本仍在被选中和包含。
有关如何解决此问题的建议? 感谢。
jQuery(document).ready(function inputHide(){
$('textarea, input:text, input:password').not($('.pre-fill')).focus(function() {
if ($(this).val() === $(this).attr('defaultValue')) {
$(this).val('');
}
}).blur(function() {
if ($(this).val()==='') {
$(this).val($(this).attr('defaultValue'))
}
});
});
答案 0 :(得分:5)
您不应该在$
方法调用中拥有jQuery变量(.not
)。试试这个:
.not('.pre-fill')
在您的代码中:
$('textarea, input:text, input:password').not('.pre-fill').focus(function() {
if ($(this).val() === $(this).attr('defaultValue')) {
$(this).val('');
}
}).blur(function() {
if ($(this).val()==='') {
$(this).val($(this).attr('defaultValue'))
}
});
答案 1 :(得分:1)
您还可以使用 :not()
selector 。
请注意this.value
比$(this).val()
更有效,因为它是直接访问DOM元素的属性,而不是通过首先构建一个jQuery对象然后调用一个jQuery对象来访问完全相同的属性。 jQuery方法。
$('textarea, input:text:not(.pre-fill), input:password:not(.pre-fill)')
.focus(function() {
if (this.value === $(this).attr('defaultValue')) {
this.value = "";
}
}).blur(function() {
if (this.value === '') {
this.value = $(this).attr('defaultValue');
}
});