Nếu bạn thiết lập một ngày tháng trên một input[type="text"]
yếu tố, bạn có thể không nhận được một ngày được định dạng nhất quán, đặc biệt khi người dùng không tuân theo định dạng ngày để nhập dữ liệu.
Ví dụ: khi bạn đặt dateFormat là dd-mm-yy
và loại người dùng 1-1-1
. Datepicker sẽ chuyển đổi cái này sang Jan 01, 2001
bên trong nhưng việc gọi val()
đối tượng datepicker sẽ trả về chuỗi "1-1-1"
- chính xác là những gì trong trường văn bản.
Điều này ngụ ý rằng bạn nên xác thực đầu vào của người dùng để đảm bảo ngày đã nhập theo định dạng bạn mong đợi hoặc không cho phép người dùng nhập ngày miễn phí (thay vì chọn công cụ chọn lịch). Mặc dù vậy nó là tốt để buộc các mã datepicker để cung cấp cho bạn một chuỗi định dạng giống như bạn mong đợi:
var picker = $('#datepicker');
picker.datepicker({ dateFormat: 'dd-mm-yy' });
picker.val( '1-1-1' ); // simulate user input
alert( picker.val() ); // "1-1-1"
var d = picker.datepicker( 'getDate' );
var f = picker.datepicker( 'option', 'dateFormat' );
var v = $.datepicker.formatDate( f, d );
alert( v ); // "01-01-2001"
Tuy nhiên, hãy lưu ý rằng mặc dù getDate()
phương thức của bộ đếm ngày sẽ trả về một ngày, nhưng nó chỉ có thể làm được rất nhiều với đầu vào của người dùng không khớp chính xác với định dạng ngày. Điều này có nghĩa là trong trường hợp không có xác nhận, có thể lấy lại ngày khác với những gì người dùng mong đợi. Emptor caveat .