Para birimi için şunu öneririm:
<div><label>Amount $
<input type="number" placeholder="0.00" required name="price" min="0" value="0" step="0.01" title="Currency" pattern="^\d+(?:\.\d{1,2})?$" onblur="
this.parentNode.parentNode.style.backgroundColor=/^\d+(?:\.\d{1,2})?$/.test(this.value)?'inherit':'red'
"></label></div>
Bkz. Http://jsfiddle.net/vx3axsk5/1/
HTML5 özellikleri "adım", "dk" ve "kalıp" form gönderildiğinde değil, onurda değil doğrulanır. Eğer ihtiyacınız step
varsa bir pattern
ve ihtiyacınız pattern
yoksa bir step
. step="any"
Desen yine de doğrulayacağından kodumla geri dönebilirsiniz .
Onblur'u doğrulamak istiyorsanız, kullanıcıya görsel bir ipucu vermenin arka planı kırmızı renklendirmek gibi yararlı olduğuna inanıyorum. Kullanıcının tarayıcısı desteklemiyorsa type="number"
geri dönecektir type="text"
. Kullanıcının tarayıcısı HTML5 kalıp doğrulamasını desteklemiyorsa, JavaScript snippet'im formun gönderilmesini engellemez, ancak görsel bir ipucu verir. Bu nedenle, HTML5 desteği zayıf olan kişiler ve JavaScript devre dışı bırakılmış veya HTTP İstekleri dövme ile veritabanına girmeye çalışan kişiler için, yine de sunucuda tekrar doğrulamanız gerekir. Ön uçta doğrulamanın önemli olduğu nokta, daha iyi bir kullanıcı deneyimi sağlamaktır. Bu nedenle, kullanıcılarınızın çoğu iyi bir deneyime sahip olduğu sürece, kodun yine de çalışması ve arka uçta doğrulayabilmeniz koşuluyla HTML5 özelliklerine güvenmek iyidir.