2009-10-18 28 views
7

Cảm ơn bạn đã tìm kiếm, tất cả các câu trả lời chân thành hữu ích đều được bỏ phiếu. Tôi có một số trường nhập ngày có ở đó khi tải trang và một nhóm được tạo động. Thay vì gọi .datepicker() trên lớp đó mỗi khi một cá thể mới được tạo ra, tôi đang sử dụng .live, nhưng nó dường như không hoạt động. Bất kỳ ý tưởng tại sao?Jquery .live hoạt động nhưng không phải với .datepicker

$("input[name=myfav]").live("click", function(){ 
    $(this).datepicker({ 
     /* some options here */ 
    }); 
}); 

Tôi nên đề cập đến, nó hoạt động hoàn toàn tốt với tự động hoàn thành chẳng hạn.

$("input[name=mytwo]").live("click", function(){ 
    $(this).autocomplete("somefile.php"); 
}); 

Trả lời

26

Đây là một bài viết về datepicker sử dụng .live-sự kiện trong jQuery:

http://www.vancelucas.com/blog/jquery-ui-datepicker-with-ajax-and-livequery/

Vấn đề là datepicker hoạt động bằng cách liên kết với các sự kiện tập trung() theo mặc định, nhưng như của jQuery 1.3.2, sự kiện 'tập trung' không thể được giám sát bởi chức năng sự kiện 'sống'.

Dưới đây là cách giải quyết từ trang web ::

<script type="text/javascript"> 
$(function(){ 
    $('input.calendarSelectDate').live('click', function() { 
     $(this).datepicker({showOn:'focus'}).focus(); 
    }); 
}); 
</script> 

EDIT: Cách giải quyết này không còn cần thiết như jQuery 1.4.1+ bây giờ hỗ trợ lấy nét và làm mờ các sự kiện cho live() . (Cảm ơn @Chris S)

+0

Cảm ơn bạn đã trả lời. Tôi biết đó là plugin liên quan vì các plugin khác hoạt động tốt. Điều này làm rõ nó. – Chris

+2

+1 bạn vừa mới tiết kiệm cho tôi rất nhiều thời gian. –

+0

Chạy vào cùng một vấn đề. Một phần khác của công việc này, đối với chúng tôi, là đảm bảo mỗi đầu vào datepicker có một ID duy nhất. Nếu không, ít nhất là trong Google Chrome, bạn có thể nhấp vào bất kỳ yếu tố đầu vào nào và nhận được một datepicker, nhưng nó thực sự sẽ thay đổi ngày trong một đầu tiên với ID đó. (Tất nhiên, về mặt ngữ nghĩa, các ID luôn phải là duy nhất, dù sao, nhưng đó là lỗi.) –

4

Đáng chú ý là jQuery 1.4.1+ hiện hỗ trợ các sự kiện lấy nét và mờ cho live(), do đó, cách giải quyết, trong khi không còn cần thiết nữa.

+1

Nó đã không hoàn toàn làm việc cho tôi nhưng $ ("ngày ") sống (" tập trung", function() { \t \t $ (this) .datepicker ({ \t \t \t DateFormat:. 'Dd/mm/yy ' \t \t}) \t}); đã làm – brad

7

Đây là những gì tôi đã sử dụng. Phải mất lợi thế của livefocus trong phiên bản mới hơn jQuery

$.datepicker.setDefaults({ dateFormat: 'yy-mm-dd', ... }); 
$('input.date').live('focus', function() { 
    $(this).datepicker().datepicker('show'); 
    true; 
}); 
0

Cập nhật: Tính đến jQuery 1.7, phương pháp .live() bị phản đối. 1.7, Sử dụng .on() để đính kèm các trình xử lý sự kiện. Tham chiếu: http://api.jquery.com/live/

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