Trong các biểu mẫu của tôi, tôi muốn sử dụng các loại biểu mẫu HTML5 mới, ví dụ <input type="url" />
( thông tin thêm về các loại ở đây ).
Vấn đề là Chrome muốn trở nên siêu hữu ích và xác thực các yếu tố này cho tôi, ngoại trừ việc nó hút vào nó. Nếu nó không xác thực được tích hợp sẵn, sẽ không có thông báo hoặc dấu hiệu nào ngoài yếu tố lấy nét. Tôi điền trước các thành phần URL "http://"
và vì vậy, xác thực tùy chỉnh của riêng tôi chỉ coi các giá trị đó là các chuỗi trống, tuy nhiên Chrome từ chối điều đó. Nếu tôi có thể thay đổi quy tắc xác nhận của nó, điều đó cũng sẽ hoạt động.
Tôi biết tôi chỉ có thể quay lại sử dụng type="text"
nhưng tôi muốn các cải tiến tốt đẹp sử dụng các ưu đãi loại mới này (ví dụ: nó tự động chuyển sang bố trí bàn phím tùy chỉnh trên thiết bị di động):
Vì vậy, có cách nào để tắt hoặc tùy chỉnh xác nhận tự động?
$('[inputmode]').each(function () { this.attr({type: this.attr('inputmode'), novalidate: true}) });
inputmode
muốn. Thực hiện theo cách của bạn, bạn vẫn không thể (ví dụ) đọc các giá trị không phải là số mà người dùng nhập vào hộp nhập loại number
. Ví dụ: thử gõ một cái gì đó không phải là số vào hộp văn bản trong fiddle này và nhấp vào nút.
<input type='number'>
không chấp nhận các giá trị không phải là số không?
inputmode
thuộc tính , mà - nếu tôi hiểu chính xác những gì tôi đọc - có thể được sử dụng để chỉ định loại bàn phím nào sẽ được cung cấp cho người dùng khi họ tương tác với trường, mà không bao hàm bất kỳ quy tắc xác thực nào. Tại một thời điểm nào đó trong tương lai, sử dụnginputmode
thuộc tính thay vìtype
thuộc tính có thể sẽ là giải pháp chính xác cho vấn đề này - nhưng chưa.