2015-10-06 49 views
3

我正在編寫一個jQuery數據表與一些輸入字段(在每一行)。其中一個字段需要是日期,所以我試圖使用jQuery datepicker來完成該字段的輸入。JQuery datepicker只適用於如果我把一個警報()在腳本

相關字段使用模板呈現的每一行:

var invoiceDateInputTemplate = '<input class="datepicker" id="InvoiceDate_{0}" name="InvoiceDate_{0}" type="text" />'; 

在數據表的建立,我呈現模板,更換{0}用適當的ID,這樣的ID &名稱參數每行都是唯一的。

在我的$(document).ready()函數的末尾,表生成後,我運行以下代碼,使用類選擇選項將每個'日期'字段設置爲啓用日期選擇器的字段。出於某種原因,這似乎並不想引起領域成爲啓用日期選擇器(「日期選擇器」)

$(function() { 
    $(".datepicker").datepicker(); 
}); 

如果我添加警報()調用$之前的日期選擇器()。它像Champ一樣工作...在datepicker初始化後alert()調用不起作用。

這將導致的DatePicker來呈現:

$(function() { 
    alert(); 
    $(".datepicker").datepicker(); 
}); 

這將導致的DatePicker到無法顯示(包括用於提供一個實例):

$(function() { 
    $(".datepicker").datepicker(); 
    alert(); 
}); 

這究竟是爲什麼?我是否錯過了導致DatePicker無法按預期方式初始化字段的內容?我非常肯定,爲了使DatePicker正常工作,必須啓動警報纔是標準操作過程。另外,爲了澄清,我不相信在數據表建立之後,我有任何領域都被關注。

+1

'.datepicker'是否在js運行之前被明確呈現?嘗試在一個'setTimeout的包裝它(函數(){$(「日期選擇器」。)日期選擇器();},500)' – Guy

+2

你應該添加文檔準備 – jollyjoyce1995

+0

你應該只[編輯]你的問題包括[ mcve],因此它可以成爲話題。 –

回答

0

事實證明,@Guy有解決方案...我設定的功能了的setTimeout內,並開始工作,因爲它應該:

setTimeout(function() { 
     $(".datepicker").datepicker(); 
    },1000); 

我應該想到之前...感謝@Guy!

-1

你用什麼數據表?最可能的是它使你附加的事件後,在這種情況下,它應該有一個像抽獎或somethingwhich事件表明數據正呈現

+0

'$(function(){...})'_is_與文檔準備好同義。 – CBroe

+0

是的,我的壞,忘記了 – guramidev

0

嘗試使用這樣的:

$(function() { 
    $(document).on("focusin",".datepicker",function(){ 
     $(this).datepicker(); 
    }); 
}); 

,如果它的工作原理,可以提高不「重新創建」日期選擇器每當元素獲得焦點時

2

我覺得你有一個異步問題!

最簡單的解決方法是調用datepicker()綁定自定義事件,然後將數據表建成後觸發事件。像這樣:

$(function() { 
    // Create data table here 
    $(window).trigger('datatable.built'); 
}); 

$(window).on('datatable.built', function() { 
    $(".datepicker").datepicker(); 
}); 
相關問題