2016-12-05 110 views
0

我知道有一個pattern屬性爲html5輸入標籤,但這有助於驗證後的字段用戶輸入了該值。可靠的html5輸入類型處理

這裏的請求是prevent用戶輸入錯誤的東西,而不是糾正之後。我不想討論它是否更好 - 這只是要求。

我也知道我可以爲keyPress事件添加事件偵聽器並決定哪些字符接受。但我所看到的所有例子都不是跨瀏覽器兼容的(我對FF,Chrome,桌面和移動版都至少感興趣),並且它們失敗了,因爲用戶可以輸入「----」或「......」。

什麼能可靠,堅固,跨瀏覽器正則表達式模式,以允許用戶鍵入:「」

  • 任何數量[0..9]
  • 只有一個小數點(或「」轉換到第一個)
  • 指定數量的小數(即小數點後的數字)
  • 可選只有一個標誌符號(‘+’或‘ - ’)作爲第一個字符
  • 常見的文本命令:方向鍵,複製/剪切/粘貼,退格鍵,刪除輸入

這是無需使用jQuery更好 - 因爲我只能爲這個目標添加。

+0

從用戶體驗來看,給出即時反饋解釋錯誤要比禁止他們輸入不正確的東西並讓他們試圖弄清楚爲什麼他們的角色不在屏幕上更好。 – Phil

+0

我明白了,但正如我寫的,設計的UI/UX問這個行爲... – Mark

+0

作爲一個開發人員,你應該推動這回說這是一個可用性問題,你會創建一個高跳出率在該網站的部分 - 我知道我會停止使用它,如果它阻止我在沒有任何反饋的情況下輸入 – Pete

回答

1

「這裏的要求是爲了防止用戶」 - 不要這樣做。

如果我輸入我的名字,但鍵入當我的手指滑和我打鍵太...沒什麼大不了的,我只是打回退,對吧?

那麼,用你的想法,錯了。您的姓名輸入將不允許使用數字,因此不會出現意外的,並且退格鍵會改爲刪除或。

在你的問題,你似乎在尋找一個數字輸入(你有沒有考慮<input type="number" />?),所以想輸入一個當手指滑動可以適用於*關鍵。無論您的意見如何,都適用相同的想法。

總是允許用戶輸入他們想要的任何東西。當他們是完成打字(onchange的元素或onsubmit的形式),然後你告訴他們「嗨,你輸入的這個東西看起來不正確。

因此,通過瀏覽器支持input[pattern]提供的行爲是正確的不應改變。

+0

我可以同意 - 實際上我*同意。但你應該引用整句話:「我不想討論它是否更好 - 這只是要求。」這是一個設計約束,它不是由我製作的... ... – Mark

+0

@Mark我知道,我也看到了。但在這樣的情況下,我覺得最好放下腳步。如果必須,請使用我給出的確切示例。向誰解釋這個設計約束是一個非常糟糕的主意。沒有任何技術水平的設計師都不會提出這樣的約束。我認真地認爲,如果你實現了所要求的約束,你會惹惱很多用戶。 –