まず、HTML5 はplaceholder
for 属性を完全にサポートしていますinput && textarea
。
次に、古いバージョンの場合、HTML5 と他の HTML の間を管理する非常に単純なjQuery Plugin Hereがあります。つまり、ブラウザが HTML5 をサポートしている場合、何もしません。HTML マークアップで placeholder 属性を使用するだけで、プラグインに作業を任せることができます。
第三に、そのようなものをどの値に引っ張るか疑問がある場合はor
、 などのスイッチを使用してみてくださいvar val = $(this).val() || $(this).text()
。必要なものが or の反対側にある場合、これは不適切な結果につながる可能性がありますが、最初の評価が true であることに注意してください。
最後に、そのプラグインが必要ない場合でも、placeholder
属性と次の JavaScriptを使用することをお勧めします。
HTML
<textarea id="a" placeholder="text are text?"></textarea>
JS
$(document).on('blur focus', '[placeholder]', function(e) {
var val = $.trim($(this).val() || $(this).text()), // remove use of .trim here if you WANT to ALLOW text are to be a blank space like " "
placeHolder = $(this).prop('placeholder');
switch(e.type) {
case 'focusin':
if (val == placeHolder) $(this).val('').text('');
break;
case 'focusout':
if (val == '') $(this).val(placeHolder).text(placeHolder);
break;
}
});
// the following will make sure all fields having placeholder will start with placeholder in place
$('[placeholder]').each(function(i) { $(this).text($(this).prop('placeholder')); });
注
一部の古いバージョンの IE では機能しない
と思わ$(this).val() || $(this).text()
れるため、実際に区別する必要がある場合があり、より長い if ステートメントを記述します。私は単にここで最短の答えを示そうとしました. 古いブラウザーとのクロスブラウザー互換性がさらに必要な場合は、このすべての作業を既に行っているプラグインをお勧めします。