สำหรับสกุลเงินฉันขอแนะนำ:
<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>
ดูhttp://jsfiddle.net/vx3axsk5/1/
คุณสมบัติ HTML5 "ขั้นตอน", "ขั้นต่ำ" และ "รูปแบบ" จะถูกตรวจสอบความถูกต้องเมื่อส่งแบบฟอร์มไม่ใช่บนเบลอ คุณไม่จำเป็นต้องstep
ถ้าคุณมีpattern
และคุณไม่จำเป็นต้องมีถ้าคุณมีpattern
step
ดังนั้นคุณสามารถย้อนกลับstep="any"
ด้วยรหัสของฉันได้เนื่องจากรูปแบบจะตรวจสอบความถูกต้องแล้ว
หากคุณต้องการตรวจสอบความถูกต้องของ onblur ฉันเชื่อว่าการให้คิวผู้ใช้ด้วยภาพนั้นมีประโยชน์เช่นกันเมื่อระบายสีพื้นหลังสีแดง หากเบราว์เซอร์ของผู้ใช้ไม่สนับสนุนtype="number"
ก็จะ fallback type="text"
ไป หากเบราว์เซอร์ของผู้ใช้ไม่สนับสนุนการตรวจสอบรูปแบบ HTML5 ข้อมูลโค้ด JavaScript ของฉันไม่ได้ป้องกันไม่ให้ส่งแบบฟอร์ม แต่จะให้คิวแบบภาพ ดังนั้นสำหรับผู้ที่มีการสนับสนุน HTML5 ต่ำและผู้ที่พยายามแฮ็คเข้าสู่ฐานข้อมูลโดยปิดการใช้งาน JavaScript หรือการปลอมคำขอ HTTP คุณจะต้องตรวจสอบความถูกต้องบนเซิร์ฟเวอร์อีกครั้ง จุดที่มีการตรวจสอบความถูกต้องของ front-end นั้นเพื่อประสบการณ์การใช้งานที่ดียิ่งขึ้น ดังนั้นตราบใดที่ผู้ใช้ส่วนใหญ่ของคุณมีประสบการณ์ที่ดีมันก็ดีที่จะต้องพึ่งพาคุณสมบัติของ HTML5 หากรหัสยังใช้งานได้และคุณสามารถตรวจสอบความถูกต้องของแบ็คเอนด์