我的頁面上有一個HTML5表單,其中包含佔位符文本的電子郵件輸入。它的作品非常漂亮,我喜歡本地驗證!在原型中使用表單驗證的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'));
});
編輯:
那豈不是巨大的,如果支持的瀏覽器的佔位符忽略的價值屬性?
編輯2:
不,我不想設定輸入類型爲文本。這會將驗證行爲從電子郵件語法更改爲拼寫檢查。
這是您正在編寫的自定義驗證還是您使用驗證插件? – kinakuta
這也不是瀏覽器的本地驗證。閱讀此處:http://diveintohtml5.org/forms.html – technopeasant
我熟悉這一點 - 我假設您爲舊版瀏覽器提供了自己的驗證,但我認爲我在描述時誤解了這個問題。您使用javascript將佔位符文本放在輸入字段中,但在支持瀏覽器的html5中,這會導致驗證觸發,因爲它實際上不是電子郵件地址? – kinakuta