2012-03-03 24 views
5

Làm cách nào để chỉ định ký tự tùy chọn trong mặt nạ nhập?Ký tự tùy chọn trong mặt nạ nhập

Tôi tìm thấy plugin đầu vào được che dấu này http://digitalbush.com/projects/masked-input-plugin/ và các định nghĩa mặt nạ này.

$.mask.definitions['g']="[ ]"; 
$.mask.definitions['h']="[aApP]"; 
$.mask.definitions['i']="[mM]"; 
$.mask.definitions['2']="[0-1]"; 
$.mask.definitions['6']="[0-5]"; 
new_mask = "29:69"; 
$("#txtTime").mask(new_mask); 

Điều này xác định mặt nạ nhập cho định dạng thời gian 12 giờ, ví dụ: 11:00. Tôi muốn cho phép người dùng chỉ định một chữ số cho "giờ". Thay vì phải nhập 01:00, người dùng có thể nhập 1:00. Làm thế nào để làm điều đó?

Trả lời

3

Bạn cần sử dụng ? cho các ký tự tùy chọn để trong trường hợp của bạn, bạn nên sử dụng "2?9:69".

+1

Nhưng điều này vẫn không cho phép người dùng chỉ định một ký tự cho giờ đó. Khi tôi nhấp vào trường đầu vào, mặt nạ sẽ đặt số phút cho số giờ bị thiếu. – user823527

+2

Bắt tốt, điều này có vẻ giống như một lỗi trong plugin. Thật không may, tôi không biết một giải pháp tốt cho nó trừ khi bạn sửa đổi các plugin chính nó. –

3

Trích dẫn và ví dụ từ the page bạn liên kết đến trong câu hỏi của bạn:

Bạn có thể có một phần của mặt nạ của bạn là tùy chọn. Mọi thứ được liệt kê sau '?' trong mặt nạ được coi là đầu vào của người dùng tùy chọn. Ví dụ phổ biến cho đây là số điện thoại + tiện ích tùy chọn.

jQuery(function($){ 
    $("#phone").mask("(999) 999-9999? x99999"); 
}); 
0

Bạn có thể sử dụng $.mask.definitions['g']="[0-9 ]";

0

Tôi có một vấn đề tương tự tôi đang cố gắng để giải quyết đối với số tiền tệ biến ($ 0.00 - $ 10000.00), và tôi không thực sự hiểu làm thế nào các plugin đang làm việc.

Một mặt, các bit $.mask.definitions['symbol'] = '???' vẻ như nó sử dụng một mảnh regex, dựa trên các ví dụ trong tài liệu tham khảo API, và phần nào khẳng định bởi phần này trong nguồn, trong mã mask chức năng của:

$.each(mask.split(""), function (i, c) { 
    if (c == '?') { 
     len--; 
     partialPosition = i; 
    } else if (defs[c]) { 
     tests.push(new RegExp(defs[c])); 
     if (firstNonMaskPos == null) 
      firstNonMaskPos = tests.length - 1; 
    } else { 
     tests.push(null); 
    } 
}); 

... Mặt khác, định nghĩa mặt nạ của []|[0-9] không hoạt động (Tôi đang cố gắng làm chuỗi trống hoặc 0-9, đối với những người không biết chữ trong regex.) Để tham khảo, tôi đang cố tạo mặt nạ để hoàn thành điều kiện 0.00-10000.00 như oooo9.99, trong đó o[]|[0-9].

Vì mã xác nhận rằng điều này dựa trên các regex, mẫu rỗng hoặc dải ô phải hoạt động nhưng không phải; đây là một lỗi khó hiểu hơn trong khung mặt nạ. Trừ khi Tôi là người đang cố gắng làm điều gì đó không chính xác, cũng có thể ...

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