3

Web サイトに 4 つのフィールドを持つ電子メール フォームがあります。3 つのテキスト入力とテキスト領域。各フィールドには、そのラベルとして機能するデフォルト値属性があります。これらの値は、要素の focus および focusout イベントで自動的に設定解除/リセットされるようにしたいと考えています。

この動作を作成する次の JavaScript/jQuery コードがあります。

$('input,textarea').data('default', "bleh");
$('input,textarea').focus(function() {
    if($(this).val() === $(this).data('default')) {
            $(this).val('');
    }
});
$('input,textarea').focusout(function() {
    if ($(this).val() === '')
    {
            $(this).val($(this).data('default'));
    }
});

data('default')私の問題は、初期属性の保存にあります。...を使ってみた.data('default', $(this).val())のですが、どうやらそれは違法で$(this)あり、認識されていません。

各要素を反復するためのきれいなjQueryの方法を見つけようとしましたが、見つけられないようです。

jQueryを使用して、私が望むものを達成する簡単な方法はありますか?

4

3 に答える 3

2

私が間違っていない限り、要素にデータ プロパティを設定する理由はありません。要素defaultValueプロパティを利用できます。

$('input, textarea').focus(function() {
  if (this.value === this.defaultValue) {
    this.value = '';
  }
});

$('input, textarea').focusout(function() {
  if (!$.trim(this.value).length) {
    this.value = this.defaultValue;
  }
});

ここにフィドルがあります

于 2013-08-05T11:51:08.613 に答える