特定のクラスのすべての入力に対してフォーカスが発生するjquery関数があります。適用された場合を除いて、そのクラスのすべての入力に適用されます。アクションをトリガーした関数のみに関数を適用するにはどうすればよいですか?
(日付をクリックすると全てクリアされます。また、1を入力した場合、もう1つはデフォルトのヒントに戻りません)
助けてくれてありがとう。
特定のクラスのすべての入力に対してフォーカスが発生するjquery関数があります。適用された場合を除いて、そのクラスのすべての入力に適用されます。アクションをトリガーした関数のみに関数を適用するにはどうすればよいですか?
(日付をクリックすると全てクリアされます。また、1を入力した場合、もう1つはデフォルトのヒントに戻りません)
助けてくれてありがとう。
使用する$(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");
}
});
クラスを使用する代わりに、 $(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/