2015-11-17 56 views
0

這是在我看來:jQuery的錯誤:日期選擇器是不是一個函數

@Html.TextBox("toDateFilter", "", new { @class = "datepicker" }) 
...etc 
...etc 


<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script> 

<script> 
    $(document).ready(function() { 
     $(".datepicker").datepicker(); 
    }); 
</script> 

我收到錯誤:

Datepicker is not a function.

我已經遵循了所有的建議其他類似的問題,並沒有任何工作。我也改變了查看這些進口替代:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> 
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/ui-lightness/jquery-ui.min.css" /> 

我也試過這個:

var $j = jQuery.noConflict(); 
$j("#datepicker").datepicker(); 

而且我也檢查jQuery的ui.min.js文件加載正確。

任何想法,爲什麼這會出錯?讓我知道如果我能提供的詳細信息...

+2

向我建議你的'.ready()'在jquery-ui.min腳本加載之前運行。你可以在這條線上放一個斷點,看看外部腳本是否已經加載了點? – Starscream1984

+0

使用'https:// code.jquery.com/ui/1.10.2/jquery-ui.js'。使用https而不是http爲我工作。給它一個旋風。 – user1

+1

你的代碼應該可以正常工作。我只是從你的問題中複製並粘貼它,它對我來說工作得很好。 – Shyju

回答

1

這是Starscream1984註釋中的答案,所以道具給他們!

問題是在jquery-ui.js腳本完成加載之前調用ready()函數。

這可能不是將它移入<head>,也從自己的域加載腳本來固定。

我能夠通過完全去除ready()功能,只是運行的內容簡單地解決它。

如果有人知道我怎麼能迫使腳本先加載,或者被稱爲最後,請讓我知道ready()功能。

0

您是否嘗試過做這樣的事情:

$(function() { 
    $("#nameOfTheFieldInModel").datepicker({ 
     dateFormat: 'dd-mm-yy', 
     changeMonth: true, 
     changeYear: true 
    }); 
}); 

在文件準備好了?

+0

剛剛嘗試過。同樣的錯誤... –

+2

如果'datepicker()'不是一個函數,那麼你試圖傳遞給它的並不重要。 – Starscream1984

+0

@ Starscream1984是的,你是對的。 –

1

日期選擇器是不是一個函數。我也面臨這個問題。我已經使用Jquery Noconflict函數解決了它。

$.noConflict(); 
jQuery(document).ready(function ($) { 
    $(function() { 
     $('.datefield').datepicker(); 
    }); 
}); 
相關問題