0

特定のクラスのすべての入力に対してフォーカスが発生するjquery関数があります。適用された場合を除いて、そのクラスのすべての入力に適用されます。アクションをトリガーした関数のみに関数を適用するにはどうすればよいですか?

私のJSFiddleを見てください

(日付をクリックすると全てクリアされます。また、1を入力した場合、もう1つはデフォルトのヒントに戻りません)

助けてくれてありがとう。

4

3 に答える 3

4

使用する$(this)

$('.inputDay').focus(function() {         
    if ($(this).val() == "dd") {
        $(this).val("").css("color", "#000000");
    }
});

作業サンプル: http://jsfiddle.net/sv9uZ/3/ (チェーンを使用するように他のコードも修正しました)

EDIT:毎回 呼び出すのを避けるため$(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 に答える