2013-07-11 34 views
1

我有一個簡單的表單,其中包含一個<input>用於填寫電子郵件地址,如果用戶決定這樣做,即該字段不是強制性的。我還使用type="email"屬性,因爲它有助於自動完成,並且它對智能手機用戶特別有益 - 它會導致鍵盤重新排列以便於電子郵件輸入。瀏覽器自動驗證一個非空值的非必填字段

但是,也有一些用戶沒有像高級移動設備那樣在輸入@符號時可能會遇到一些困難。此外,還有一些桌面用戶無法輸入;我親自認識一些人,我認爲還有更多。對於這些用戶,我將<input>的初始值設置爲@。我會強調這不是佔位符。

但現在這兩件事情衝突。由type="email"激活的瀏覽器本機表單驗證機制現在阻止了表單提交,因爲他們不瞭解該字段不是強制性的,並且我不介意發送@作爲值的用戶。

有沒有辦法告訴瀏覽器驗證字段只有當的值不是@或空字符串?很明顯,使用javascript創建我自己的驗證器真的很容易,但我不想訴諸於此。

或者我的前提是用戶無法輸入@標誌爲假,我可以通過簡單地將<input>空置於第一位來解決此問題?有沒有關於此事的研究?我仍然偶爾會看到最近在各種技術論壇上絕望的用戶投訴,我想大多數類似的沒有經驗的用戶不會去網上詢問,也許是因爲他們甚至不知道如何去做。

還是應該用舊的type="text"

你認爲我應該怎麼做?

預先感謝您!

+0

我不知道你的用戶組,但總的來說,我認爲人們知道電子郵件地址,至少知道如何編寫這些地址。另外,如果你看看Facebook這樣的網站,有1110億用戶,並且在電子郵件文本框中沒有「@」號,似乎人們可以處理它。 - 再次檢查你的用戶組,可能與facebook非常不同,並自己回答這個問題。另外,如果有人不知道如何寫「@」,那麼這個人很可能首先不會有電子郵件地址。 – peter

回答

2

似乎禁用用戶代理驗證的唯一方法是將novalidate添加到您的表單。顯然,這將禁用表單上的所有UA驗證,而不僅僅是一個輸入。也許你可以對所有其他輸入使用Javascript驗證,並將input[type="text"]用於其他任何輸入。

<form novalidate> 
    <input type="email" value="@"> 
    <input type="submit" value="submit"> 
</form> 

我會使用JavaScript來根據用戶代理改變字段。

它是一種真正的恥辱是,W3C沒有想到這一點,無疑對輸入就足夠了一個簡單的novalidate,我真的希望這得到固定,否則一切input[type="*"]是一種供將來使用的無用。