5

jQuery giữ mở lại sau khi nhấp vào một ngày trong IE 8, ngay cả trên trang demo của họ:jQuery datepicker giữ mở lại trong IE datepicker

http://jqueryui.com/demos/datepicker/

Có ai biết làm thế nào để sửa lỗi này? Tôi không biết về trang demo, nhưng tôi gặp vấn đề tương tự với jQuery 1.6.2 và jQuery UI 1.8.15.

Ngoài ra, thiết lập các tùy chọn minDate và maxDate dường như không có bất kỳ tác dụng trong IE 8. Trên đây dường như cũng là đúng với IE 7.

+0

Tôi chỉ cần chạy qua vấn đề này giống nhau. Nó dường như là hành vi mới được giới thiệu trong 1.8.15. Tôi đang tìm cách giải quyết. –

+0

Hạ cấp xuống jQuery UI 1.8.14 đã thực hiện công việc cho tôi. –

+0

Có phiên bản "ổn định" 1.8.16 có sự cố này được khắc phục. –

Trả lời

1

1.8.14 works fine trong IE8.

Việc mở lại có vẻ là lỗi trong 1.8.15, xem broken demo.

+0

Cảm ơn! Tôi đã hạ cấp xuống 1.8.14 và đã khắc phục vấn đề mở lại lịch. Hy vọng ai đó có một giải pháp cho các vấn đề minDate và maxDate. –

+0

Ok, minDate và maxDate là lỗi của tôi. Tôi đã vượt qua ngày ở định dạng sai. Tôi đã chuyển ngày mới ('2011-08-16') thay vì ngày ('08 -18-2011 ') làm tùy chọn minDate. –

+0

Vui vì bạn đã giải quyết được phần khác. Tôi đã tìm kiếm danh sách lỗi giao diện người dùng jQuery nhưng không có gì khớp với những gì bạn tìm thấy. Tôi sẽ tự nâng cao bản thân vào ngày mai nếu tôi không thể tìm thấy lỗi hiện tại. – andyb

1

Tôi gặp vấn đề tương tự với IE8 và phiên bản Jquery UI 1.8.16 tùy chỉnh (tất cả các tùy chọn được chọn) Khi tôi sử dụng phiên bản 1.8.16 phát hành đầy đủ, sự cố đã biến mất.

+0

Cảm ơn thông tin đó! Tôi sẽ đảm bảo rằng tôi đang sử dụng phiên bản đầy đủ. –

8

Sau đây giải quyết vấn đề này đối với tôi (sử dụng jQuery 1.7.2/jQueryUI 1.8.20)

var $input = $('#date'); 

$input.datepicker({ 
    /* 
    * your other settings here 
    */ 
    onSelect : function() { $input.blur(); }, 
    onClose : function() { $input.change(); } 
}); 

$input.on('change paste', function(evt) { 
    // process new date input here 
}); 
+0

Bạn cũng có thể sử dụng '$ (this)' trong các hàm gọi lại 'onSelect' và' onClose'. –

+1

@koiyu, bạn có thể nhưng sau đó bạn đang gọi hàm tạo jQuery một lần nữa để tạo một cá thể mới cho phần tử đầu vào. Hiệu quả hơn để sử dụng một thể hiện được lưu trong bộ nhớ cache. –

1

Chúng tôi đang phải đối mặt với cùng một vấn đề đối với jquery ui 1.11.2. Đoạn sau đây giải quyết vấn đề trong trường hợp của chúng tôi:

var input = $('<input>'); 
 

 
input.datepicker({ 
 
    onSelect: function() { 
 
    this.lastShown = new Date().getTime(); 
 
    }, 
 
    beforeShow: function() { 
 
    var time = new Date().getTime(); 
 
    return this.lastShown === undefined || time - this.lastShown > 500; 
 
    } 
 
});