2010-06-22 43 views
17

Tôi đang sử dụng một trong những loại HTML5 đầu vào mới, number:Lấy giá trị của một số HTML5 đầu vào

<input type="number" /> 

Trong Opera, mà chỉ là trình duyệt máy tính để bàn Tôi biết trong số đó hiện đang nhận ra nó, nó hiển thị như vậy:

enter image description here

Sự cố tôi đang gặp phải là một trong xác thực. Nếu người dùng nhập nội dung nào đó không hợp lệ vào trường, ví dụ: "abc", giá trị được trả về bởi myInput.value là một chuỗi trống. Điều này làm cho nó không thể nói cho dù người dùng rời khỏi trường trống, hoặc nếu họ đã nhập một số dữ liệu không chính xác. Có cách nào để có được giá trị thực của lĩnh vực này?

Trả lời

13

Dự thảo HTML5 định nghĩa: Thuật toán sanitization

Giá trị là như sau: Nếu giá trị của nguyên tố này không phải là một số điểm nổi hợp lệ, sau đó đặt nó vào chuỗi rỗng để thay thế.

Reference1

Tôi cho rằng bạn sẽ phải sử dụng một giá trị mặc định của "0" để đảm bảo lĩnh vực này bị bỏ hoang sơ hoặc nếu có điều gì không hợp lệ đã được nhập, vì có vẻ là không có cách nào rõ ràng để phân biệt hai.

Sau khi đọc lên số kỹ thuật xác nhận và một số thử nghiệm (trong Opera 10,54) Tôi kết luận rằng:

<input id="email" type="email" value="blah"> 
document.getElementById("email").validity.typeMismatch // True 

Không hoạt động trên <input type="number">. Không chắc chắn nếu nó được cho là, hoặc nếu đó là một công việc đang tiến hành. Tuy nhiên, tài sản tồn tại, mặc dù nó luôn trả về Sai.

Read more2

Bạn cũng có thể thiết lập một phương pháp xác nhận tùy chỉnh Reference3

+2

Oh quả bóng. Để trống trường cần phải là trạng thái hợp lệ cho mục đích của tôi (và nó khác với nhập 0 ...) – nickf

+0

Thông số đó có nghĩa là "Nếu áp dụng các quy tắc để phân tích các giá trị số dấu chấm động thành kết quả đầu vào trong một lỗi, sau đó trả về lỗi; ngược lại, trả về số kết quả". Bạn có nghĩ rằng có cách nào để bắt lỗi đó không? – nickf

+0

Xem câu trả lời cập nhật. – Daniel

Các vấn đề liên quan