テキストボックスに透かし文字を入れるJS
2009.11.27 金曜日最近多い気がする。
テキストボックスが空の時に初期値で警告文とか入っていて、フォーカスすると消えるアレ。

ここんとこ出番が多かったのでjQueryのプラグインにしてみた。
未入力のままフォームがsubmitされると初期値が送信されちゃうので、親のformオブジェクトを探してsubmitの際に空にするようにしてみた。
サンプル
使い方
$("#text01").setDefaultValue("値を入力してください");<br />
$("#text02").setDefaultValue("値を入力してください", "gray");<br />
第一引数に初期値になるメッセージ
第二引数にクラス名を入れると、初期値を表示している際に適用される。
グレー文字で出したいとか、背景を赤にしたいとかありそうだったので。
ソース
- <br />
- (function($) {<br />
- $.extend({<br />
- textarea : new function(){<br />
- var TA = this;<br />
- TA.set = function(o, m, c){<br />
- if (Object.prototype.toString.call(m) != "[object String]")return false;<br />
- var parent;<br />
- var p = o.parents();<br />
- for(var i=0;i</p>
- <p.length;i++){<br />
- if (typeof p[i].elements != "undefined"){<br />
- $(p[i]).submit(function(){<br />
- if (o.val() == m){<br />
- o.val('');<br />
- }<br />
- });<br />
- break;<br />
- }<br />
- }<br />
- if (o.val() == "" || o.val() == m){<br />
- o.val(m);<br />
- if (c) o.addClass(c);<br />
- }<br />
- o.focus(function(){<br />
- if (o.val() == m){<br />
- o.val('');<br />
- if (c) o.removeClass(c);<br />
- }<br />
- });<br />
- o.blur(function(){<br />
- if (o.val() == ""){<br />
- o.val(m);<br />
- if (c) o.addClass(c);<br />
- }<br />
- });<br />
- }<br />
- }<br />
- });<br />
- $.fn.extend({<br />
- setDefaultValue: function(m, c){<br />
- $.textarea.set($(this), m, c);<br />
- }<br />
- });<br />
- })(jQuery);<br />