2014-05-07 73 views
2

我試圖讓下面的代碼工作,讓我使用datepicker。雖然我以前有過這種工作方式的變化,但現在我無法在恢復後使其工作。未被捕獲的TypeError與Modernizr.Load

我得到的錯誤「遺漏的類型錯誤:未定義是不是一個函數」線下「Modernizr.load」

<script> 
Modernizr.load({ 
    test: Modernizr.inputtypes.date, 
    nope: ['http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js', 'jquery-ui.css'], 
    complete: function() { 
     if (window.jQuery) { 
      jQuery('input[type=date]').datepicker({ 
       dateFormat: 'yy-mm-dd' 
      }); 
     } 
    } 
}); 

任何建議,這是什麼錯誤的原因是什麼?

+0

這可能幫助別人。爲'Modernizr.mq'搜索Uncaught TypeError將我降落在這裏。我不知道'mq()'媒體查詢並不總是在腳本中,所以更新到最新版本的Moderinzr修復了它。 –

回答

0

Uncaught TypeError: undefined is not a function意味着您試圖將某些東西作爲不存在的函數調用。在這種情況下,您通過引用調用幾個函數。

Modernizr.loadjQuery().datepicker。這意味着要麼Modernizr.load不存在,在這種情況下請確保Modernizr.load checkbox is checked。如果是日期選擇器,是造成問題,那麼你需要檢查你的開發工具的網絡日誌,看是否

  1. jQuery UI的是下載
  2. 它被正確解析(沒有錯誤被扔在控制檯爲了它)。

此外,jQuery 1.4是4歲半!如果可以的話,嘗試使用更新的版本,以後的版本會有很多速度改進!

+0

我已經確定我有最新的Modernizr和jQuery 1.9.1,並且一切似乎都正在加載。現在控制檯的錯誤發生了一些變化: Uncaught TypeError:undefined不是函數1027:29 Modernizr.load.complete 1027:29 c modernizr-2.8.1.js:845 h modernizr-2.8.1 .js:845 B modernizr-2.8.1.js:845 Modernizr.load modernizr-2.8.1.js:846 (匿名函數) 我是否明白這一點?這與Modernizr無法處理日期選擇器測試有關嗎? – Moonie

1

我只是貼一個簡單的Modernizr的自定義生成您的fiddle這似乎工作對於Firefox:

然而,我不得不改變你加載的jQuery UI的方式:只需更換CDN與您需要的主題:

nope: [ 
     'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js', 
     'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js', 
     'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.css'], 
    .... 

敏思是正確的,在這裏自定義生成:

enter image description here

+0

注意:Modernizr的自定義生成器自這個答案以來進行了修改。我不確定這是否仍然有可能。但也許有人可以照亮這一點 –