2012-05-03 5 views
2
 $('input[class*="defaulttext"]').each(function() { 

        this.value = $(this).attr('title'); 
        $(this).addClass('defaultclass'); 

        $(this).focus(function() { 
         if (this.value == $(this).attr('title')) { 
          this.value = ''; 
          $(this).removeClass('defaultclass'); 
         } 
        }); 

        $(this).blur(function() { 
        if (this.value == '') { 
         this.value = $(this).attr('title'); 
         $(this).addClass('defaultclass'); 
        } 
       }); 


       }); 

これは基本的にテキストボックスの背景テキスト効果を追加します(タイトルを使用します)。一旦選択されると、テキストは消える。submitでデフォルトテキストをテキストボックスから削除する

ここで、オプションのフィールドに問題があります。ユーザーがこれらのフィールドを編集しない場合、デフォルトのバックグラウンドテキストがフォームとともに送信されます。フォームが送信されると、未編集のフィールドの値をリセットする必要があります。どのようにこれを行うにはどのようなアイデア?

フォーム送信時にtitle = valueかどうかを確認しますか?はいの場合は ''に設定します。

+1

あなたは、「バックグラウンドテキスト」を追加していないあなたが実際に設定していますフィールドの値なぜHTML5 [プレースホルダ](https://developer.mozilla.org/en/HTML/Element/input#attr-placeholder)属性を使用しないのですか? – j08691

+0

j08691 - 良い提案ですが、ほとんどのユーザーがそれをサポートする最新のブラウザを使用していないことを覚えておく必要があります。 – naspinski

+0

プレースホルダ属性に精通していませんでした。それを見て、ありがとう。 – domino

答えて

1

を使用して編集したフィールドをマークすることができ、あなたができる:

$("#yourForm").submit(function() { 
    $('input[class*="defaulttext"]').val(""); 
}; 
+1

入力された入力を含むすべての入力が空になりませんか? – aldux

+0

彼の 'blur'関数では、デフォルトクラスが値を持っている場合、それを追加したり削除したりするためです。 – mattytommo

+0

これは間違いありません!私はそれを逃した。 – aldux

1

HTML5 Placeholder jQuery Pluginを使用しましたが、この場合はうまくいきました。

+0

準拠ブラウザの場合、これは最も洗練されたソリューションです – aldux

0

これを実行して、title = valueの値を確認できます。または代わりに、あなたが持っているコードに基づいてjQuery.data()

0
$("#yourForm").submit(function() { 
    $('input.defaulttext').each(function() { 
     if($(this).val() === $(this).attr('title')) { $(this).val(''); } 
    }); 
}; 
関連する問題