2009-10-18 61 views
7

感謝您的期待,所有真誠有幫助的答案都會提高。 我有一些日期輸入字段,當頁面加載時,有一堆動態生成。每次生成一個新實例時,不要在該類上調用.datepicker(),而是使用.live,但它似乎沒有工作。任何想法爲什麼?Jquery .live作品,但不包含.datepicker

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

我應該提到,它適用於自動完成的例子。

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

回答

26

這裏是關於在jQuery中使用.live事件的日期選擇器的文章:

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

的問題是,在日期選擇器的工作原理是通過綁定默認設置到焦點()事件,但是從jQuery 1.3.2開始,「焦點」事件不能被「實時」事件函數監視。

下面是從網站::解決方法

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

編輯:此解決方案不再需要爲jQuery的1.4.1+現在支持實時對焦和模糊事件() 。 (謝謝@Chris S

+0

感謝您的答覆。我知道這是插件相關的,因爲其他插件工作正常。這澄清了它。 – Chris 2009-10-18 21:34:18

+2

+1你剛剛爲我節省了很多時間。 – 2009-12-11 20:35:21

+0

碰到同樣的問題。對於我們來說,使這項工作的另一部分是確保每個日期選擇器輸入具有唯一的ID。否則,至少在谷歌瀏覽器中,您可以點擊任何輸入並獲取日期選擇器,但實際上它會使用該ID更改第一個日期。 (當然,從語義上講,ID應該始終是唯一的,不過那是錯誤。) – 2010-11-16 15:36:12

4

值得注意的是,jQuery 1.4.1+現在支持live()的焦點和模糊事件,所以解決方法雖然很酷,但不再需要 - 原生海報的版本工作正常!

+1

它也不太爲我工作,但$( 「日期 」)生活(「 焦點」,函數(){ \t \t $(本).datepicker({ \t \t \t DATEFORMAT:「DD/MM/yy' \t \t}) \t});沒有 – brad 2011-09-21 04:32:13

7

這就是我最終使用的。這需要在較新的jQuery

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

更新優點的livefocus:在jQuery 1.7的,所述.live()方法被棄用。 1.7,使用.on()附加事件處理程序。參考:http://api.jquery.com/live/