2013-04-20 30 views
5

Tôi có hai thành phần input hoạt động như trình tạo ngày tháng của giao diện người dùng jQuery. Sau khi bạn thực hiện lựa chọn trên phần tử datepicker đầu tiên, nó sẽ tự động tập trung vào phần tử datepicker thứ hai và hiển thị lịch, cho phép bạn dễ dàng và nhanh chóng lựa chọn.jQuery UI Datepicker - Tại sao biểu tượng ngày 2 biến mất khi tập trung?

Vì bất kỳ lý do gì, lần xuất hiện ngày/giờ thứ hai xuất hiện trong giây lát và sau đó biến mất. Tôi không chắc tại sao nó lại biến mất; bất cứ ai có thể cung cấp cho tôi một lời giải thích là tại sao nó biến mất và một giải pháp có thể?

Hiện nay việc sử dụng các thư viện sau: jQuery 1.8.3, jQuery UI 1.9.2

Dưới đây là đoạn code tôi hiện đang sử dụng:

<ul class="fields"> 
    <li><label>Date picker #1</label> 
     <input type="text" class="date-picker-1" /> 
    </li> 
    <li><label> Date picker #2</label> 
     <input type="text" class="date-picker-2" /> 
    </li> 
</ul> 

$('input.date-picker-1').datepicker({ 
    constrainInput: true, 
    hideIfNoPrevNext: true, 
    onSelect: function() { 
     $(this).closest('.fields') 
      .find('.date-picker-2').datepicker('show'); 
    } 
}); 

$('input.date-picker-2').datepicker({ 
    onFocus: 'show' 
}); 

Dưới đây là một fiddle: http://jsfiddle.net/B78JJ/

Nếu bất kỳ các thông tin khác sẽ hữu ích, vui lòng hỏi và tôi rất sẵn lòng trợ giúp.

Trả lời

4

Có vẻ như một vấn đề thời gian tập trung, thực hiện giải pháp nhanh chóng là sử dụng một thời gian chờ nhỏ:

$('input.date-picker-1').datepicker({ 
    constrainInput: true, 
    hideIfNoPrevNext: true, 
    onSelect: function() { 
     var dees = $(this); 
     setTimeout(function() { 
      dees.closest('.fields').find('.date-picker-2').datepicker('show'); 
     }, 100); 
    } 
}); 

Xem working fiddle

+0

Tính năng này hoạt động trong IE, Chrome, Firefox và Safari cho tôi. Cảm ơn Nelson. Bạn có biết đây có phải là vấn đề thường gặp với các sự kiện 'onfocus' không? –

+1

Nó có thể là một số lỗi/góc trường hợp trong mã ngày jquery-ui jquery, nó sẽ yêu cầu dành một số thời gian để gỡ lỗi datepicker để tìm lỗi chính xác, vì vậy nếu bạn không muốn dành thời gian của bạn vào đó thì workaround timeout là cách dễ dàng về phía trước. – Nelson

+0

Đó là những gì tôi sẽ tiếp tục và sử dụng. Tôi sẽ cố gắng tìm ra lỗi trong một thời gian, nhưng bây giờ tôi phải đáp ứng thời hạn! Cảm ơn các giải pháp. –

0

$(this).closest('.fields') 
      .find('.date-picker-2').datepicker('show'); 

NÀY Bạn có thể sử

window.setTimeout(function(){ 
      $('.date-picker-2').datepicker('show'); 
     }, 1); 
+0

Tại sao mã cụ thể nào gây ra vấn đề? –

+0

chúng ta cần mở sau một thời gian – PSR

+0

đó là vấn đề thời gian afocus – PSR

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