2012-06-04 31 views
17

HTML5 có loại mặt nạ văn bản nào hay tôi vẫn phải bẫy onkeydown, v.v ...?Cách dễ nhất để che dấu các ký tự trong nhập văn bản HTML (5)

jbabey là đúng - "che" như trong việc chặn một số ký tự không hợp lệ, không ẩn nội dung được nhập.

Cách tốt nhất (như đơn giản nhất và đáng tin cậy nhất) mà tôi tìm thấy là bẫy onkeyup và sau đó chỉ chạy một regex thay thế trên giá trị của trường văn bản, xóa mọi ký tự không hợp lệ.

này có một vài ưu điểm:

  1. Thật dễ dàng để thực hiện (một chức năng, hai dòng code).
  2. Đáng tin cậy và bao gồm tất cả các trường hợp tôi đã nghĩ đến.
  3. Nó không chặn các lệnh chính như sao chép/dán, chọn tất cả hoặc phím mũi tên.

Nhưng nhược điểm chính của nó là nó cho thấy các ký tự đã nhập một thời gian ngắn trước khi loại bỏ chúng, làm cho nó trông rất hackish và không chuyên nghiệp.

+5

Tại sao không 'input' của 'type = "password"'? – Zuul

+0

Câu hỏi có thể có nghĩa là chỉ cho phép một số ký tự xuất hiện trong trường văn bản, ví dụ, số và (-) cho đầu vào điện thoại –

+3

tôi nghĩ anh ấy nghĩa là [mặt nạ] (http://en.wikipedia.org/wiki/Input_mask), không phải [mặt nạ] (http://en.wikipedia.org/wiki/Mask) – jbabey

Trả lời

10

Tra cứu HTML5 Input Types mới. Các hướng dẫn này hướng dẫn các trình duyệt thực hiện lọc dữ liệu phía máy khách, nhưng việc triển khai không hoàn chỉnh trên các trình duyệt khác nhau. Thuộc tính pattern sẽ thực hiện lọc theo kiểu regex, nhưng, một lần nữa, các trình duyệt không hoàn toàn (hoặc không) hỗ trợ nó.

Tuy nhiên, những điều này sẽ không tự chặn chính sách nhập, nó sẽ đơn giản ngăn việc gửi biểu mẫu với dữ liệu không hợp lệ. Bạn vẫn sẽ cần phải nắm bắt sự kiện onkeydown để chặn thông tin nhập chính trước khi hiển thị trên màn hình.

+0

Để cải thiện câu trả lời, nên đưa ra một ví dụ về bẫy onkeydown. – thecoolmacdude

5

Có, theo bản nháp HTML5, bạn có thể sử dụng thuộc tính pattern để chỉ định đầu vào được phép bằng cụm từ thông dụng. Đối với một số loại dữ liệu, bạn có thể sử dụng các trường nhập đặc biệt như <input type=email>. Nhưng những tính năng này vẫn thiếu hỗ trợ hoặc có hỗ trợ về chất lượng kém.

+0

Ah tuyệt vời! Đó chính xác là điều tôi đã hy vọng có thể có. Tìm kiếm trên google của tôi không bật lên bất kỳ thứ gì. Thật không may nó dường như không được áp dụng rộng rãi. – devios1

+1

@chaiguy, 'attr-input-pattern' từ [Dự thảo công việc W3C 29 tháng 3 năm 2012] (http://www.w3.org/TR/html5/common-input-element-attributes.html#attr-input -mẫu) ! – Zuul

+0

Thật không may, thông số chỉ xuất hiện để xác định khi một phần tử bị mô hình không phù hợp, không phải cách trình duyệt nên xử lý nó. Lý tưởng nhất là nó sẽ chặn các đầu vào từ bao giờ diễn ra, nhưng nó chỉ có thể dẫn đến một biên giới màu đỏ hoặc một cái gì đó ngớ ngẩn như thế. – devios1

5
  1. xác nhận cơ bản có thể được thực hiện bằng cách chọn loại thuộc tính của các yếu tố đầu vào. Ví dụ: <input type="email" /> <input type="URL" /> <input type="number" />

  2. sử dụng mẫu thuộc tính như: <input type="text" pattern="[1-4]{5}" />

  3. cần thuộc tính <input type="text" required />

  4. maxlength: <input type="text" maxlength="20" />

  5. phút & max: <input type="number" min="1" max="4" />

2

Một chút muộn, nhưng một plugin hữu ích mà sẽ thực sự sử dụng một mặt nạ để cung cấp cho hạn chế hơn một chút trên người dùng nhập vào.Thông tin

<div class="col-sm-3 col-md-6 col-lg-4"> 
    <div class="form-group"> 
    <label for="addPhone">Phone Number *</label> 
     <input id="addPhone" name="addPhone" type="text" class="form-control 
     required" data-mask="(999) 999-9999"placeholder> 
    <span class="help-block">(999) 999-9999</span> 
    </div> 
</div> 

<!-- Input Mask --> 
<script src="js/plugins/jasny/jasny-bootstrap.min.js"></script> 

enter image description here

Thông tin thêm về các plugin http://www.jasny.net/bootstrap/javascript/#inputmask

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