0

我有一个 jquery 函数,它发生在给定类的所有输入的焦点上。它工作得很好,除非当它被应用时,它适用于该类的所有输入。如何仅将功能应用于触发操作的功能?

请看我的JSFiddle

(点击日期时,全部清除。另外如果你输入了1,其他不返回默认提示)

非常感谢您的帮助。

4

3 回答 3

4

采用$(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");
    }
});
于 2012-04-26T16:52:30.890 回答
1

只需说 $(this).val <-- 而不是使用类。这将仅适用于当前的

给出类名将适用于所有匹配的类名。相反,这样说将仅适用于当前修改的那个

于 2012-04-26T16:51:35.957 回答
1

我知道这已经得到解答,但通常当我这样做时,我会将我想要灰显的值存储在输入的标题属性中,这将允许您减少一些代码并执行以下操作:

$(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/

于 2012-04-26T17:54:33.340 回答