2012-12-28 20 views
7

Vấn đềAngularJs: Cách định dạng dữ liệu trong một đầu vào?

Tôi cần định dạng một lĩnh vực đầu vào trực quan để giúp người sử dụng biết những gì họ nên gõ như một số điện thoại. Ví dụ: tôi muốn chấp nhận số điện thoại dưới dạng mã vùng gồm 3 chữ số, tiền tố gồm 3 chữ số và hậu tố 4 chữ số: (207) 555-1212. Tôi muốn:

  1. cung cấp các trợ giúp định dạng cho các lĩnh vực đầu vào - những dấu ngoặc đơn và dấu nối
  2. Tôi không muốn các ký tự 'helper' để đưa vào dữ liệu thực tế tôi lưu trữ trong mô hình của tôi .
  3. Khi người dùng nhập, tôi muốn các dấu ngoặc đơn xuất hiện một cách kỳ diệu, sau đó có dấu gạch ngang cũng xuất hiện ở đúng điểm.

Cách tốt nhất để làm điều đó là gì?

Lưu ý: Đây không phải để hiển thị số - Tôi có thể sử dụng bộ lọc cho số đó. Đây là để định dạng dữ liệu trong trường input.

Cảm ơn sự giúp đỡ của bạn!

+0

có lẽ bạn cần trường nhập tùy chỉnh (tiện ích con)? – akonsu

Trả lời

14

Nếu bạn đang tìm kiếm một giải pháp đơn giản, bạn có thể đưa AngularUI thử, http://angular-ui.github.com/

Đây là ví dụ từ "Mask" của trang đó:

<input ng-model="maskDemo" ui-mask="'99-99-9999'"> 

Các "9" là những con số và những thứ khác chỉ là mặt nạ/trình giữ chỗ. Nó chỉ nên gửi các giá trị thực tế. Bạn sẽ chỉnh sửa mặt nạ để bao gồm dấu ngoặc đơn và bất kỳ thứ gì khác mà bạn có thể cần.

+0

Nhược điểm duy nhất cho điều này là khi số điện thoại được xem ở nơi khác, hoặc được lưu trong cơ sở dữ liệu, nó sẽ giống như "9999999999". – MyCodeSucks

+8

@ MyCodeSucks đó thường là những gì bạn sẽ muốn, dải bất kỳ không chữ số, sau đó bất cứ lúc nào bạn muốn hiển thị số định dạng của bạn, bạn chỉ cần áp dụng 'ui-mask' cho nó. –