我有一个 jquery 函数,它发生在给定类的所有输入的焦点上。它工作得很好,除非当它被应用时,它适用于该类的所有输入。如何仅将功能应用于触发操作的功能?
请看我的JSFiddle
(点击日期时,全部清除。另外如果你输入了1,其他不返回默认提示)
非常感谢您的帮助。
我有一个 jquery 函数,它发生在给定类的所有输入的焦点上。它工作得很好,除非当它被应用时,它适用于该类的所有输入。如何仅将功能应用于触发操作的功能?
请看我的JSFiddle
(点击日期时,全部清除。另外如果你输入了1,其他不返回默认提示)
非常感谢您的帮助。
采用$(this)
$('.inputDay').focus(function() {
if ($(this).val() == "dd") {
$(this).val("").css("color", "#000000");
}
});
工作示例: http: //jsfiddle.net/sv9uZ/3/ (我也修复了其他代码以使用链接)
编辑: 为了避免$(this)
每次调用(因为我们不止一次使用),我们可以将它存储到一个局部变量并使用它。感谢Mathletics提出来。
$('.inputDay').focus(function() {
var item=$(this);
if (item.val() == "dd") {
item.val("").css("color", "#000000");
}
});
只需说 $(this).val <-- 而不是使用类。这将仅适用于当前的
给出类名将适用于所有匹配的类名。相反,这样说将仅适用于当前修改的那个
我知道这已经得到解答,但通常当我这样做时,我会将我想要灰显的值存储在输入的标题属性中,这将允许您减少一些代码并执行以下操作:
$(document).ready(function() {
$('.inputDay, .inputYear').focus(function(e){
$this = $(this);
$this.val() == $this.attr('title') ? $this.val('') : '';
$this.css("color", "#000");
}).blur(function(){
$this = $(this);
if(!$this.val().length){
$this.val($this.attr("title")).css("color", "#999");
}
});
$('.inputDay, .inputYear').trigger('blur');
});
这样您就不必将函数绑定到任何特定值,如“dd”或“yyyy”,这样它就可以被重用。
对于演示:http: //jsfiddle.net/Wjmav/1/