jQueryでblurイベント発生時にプレースホルダーを表示する

jQueryでblurイベント発生時にプレースホルダーを表示する

jQueryでイベント発生時に1回だけイベントを実行する」のDEMOでプレースホルダーが表示されていますが、フォーカスを一回あてると消えてしまい、フォーカスを外してもプレースホルダーが表示されません。

このフォーカスをはずしたタイミングでイベントが発生するのがblurです。blurでプレースホルダーを表示するようにしてみます。

現状のソースです。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>サンプル</title>
<script src="http://code.jquery.com/jquery.js"></script>
<!-- コーディング部分 -->
<script type="text/javascript">
$(function(){
$("#area").val("入力してください").css("color","lightgray");
$("#area").one("focus",function(){
$(this).val("");
$(this).css("color","black");
});
});
</script>
<!-- コーディング部分 -->
</head>
<body>
<form>
入力欄<br>
<textarea name="area" id="area" cols="30" rows="3"></textarea>
<br><br>
<input type="submit" value="登録">
</form>
</body>
</html>

まず、一回だけプレースホルダーを表示を削除するのをやめ、focus時に削除するようにfocusを使用します。

次にblur時にプレースホルダーをvalで表示し、cssで色をlightgrayに戻しています。

以下、編集したソースです。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>サンプル</title>
<script src="http://code.jquery.com/jquery.js"></script>
<!-- コーディング部分 -->
<script type="text/javascript">
$(function(){
$("#area").val("入力してください").css("color","lightgray");
$("#area").focus(function(){
$(this).val("");
$(this).css("color","black");
});
$("#area").blur(function(){
$(this).val("入力してください").css("color","lightgray");;
});
});
</script>
<!-- コーディング部分 -->
</head>
<body>
<form>
入力欄<br>
<textarea name="area" id="area" cols="30" rows="3"></textarea>
<br><br>
<input type="submit" value="登録">
</form>
</body>
</html>

DEMOです。

コメント

タイトルとURLをコピーしました