ページに、プレースホルダーテキストを含む電子メール入力を含むHTML5フォームがあります。それは美しく機能し、ネイティブ検証が大好きです!
古いブラウザに最適なサービスを提供する方法がわかりません。プレースホルダーのテキストをコピーして値としてインプリントするJavaScriptを少し使用しています。それはうまく機能しますが、フォームに電子メールアドレスではないテキストがあるため、フォームの検証はオフになります。
検証を失いたくない..何かアイデアはありますか?
HTML
<input id="email" type="email" placeholder="Enter your email address">
JavaScript(プロトタイプ):
var Placeholder = Class.create({
initialize: function (element) {
this.element = element;
this.placeholder = element.readAttribute('placeholder');
this.blur();
Event.observe(this.element, 'focus', this.focus.bindAsEventListener(this));
Event.observe(this.element, 'blur', this.blur.bindAsEventListener(this));
},
focus: function () {
if (this.element.hasClassName('placeholder'))
this.element.clear().removeClassName('placeholder');
},
blur: function () {
if (this.element.value === '')
this.element.addClassName('placeholder').value = this.placeholder;
}
});
Event.observe(window, 'load', function(e){
new Placeholder($('email'));
});
編集:
プレースホルダーをサポートするブラウザーがvalue属性を無視した場合、それは素晴らしいことではないでしょうか。
編集2:
いいえ、入力タイプをテキストに設定したくありません。これにより、検証の動作が電子メール構文からスペルチェックに変更されます。