2012-04-24 33 views
2

我有以下幾點:我的javascript函數無法找到

$(function() { 

    $.ajaxSetup({ cache: false }); 
    var dialogs = {}; 

    var formSubmitHandler = function (e) { 
     ... 
    } 

} 

然後在另一個腳本我打電話

function dialogClick(link) { 

    $.get(viewUrl + parameters) 
      .success(function (content) { 
       if (content.match(/^[eE]rror/)) { 
        mvcOnFailure(data) 
       } else { 
        $.modal({ 
         title: title, 
         closeButton: true, 
         content: content, 
         width: false, 
         resizeOnLoad: true 
        }).find('form').submit(formSubmitHandler).end(); 
       } 
      }) 

請注意,我已經削減了劇本的部分,以方便讀書。有沒有腳本錯誤只顯示以下錯誤:

中,第二腳本,我得到一個錯誤消息說「SCRIPT5009:‘formSubmitHandler’在Internet Explorer中未定義

難道我錯調用它,我想。該函數將是全球性的,當我檢查 腳本,它是內部的連接到網頁

回答

7

不,這不是全球性的,你的「formSubmitHandler」功能在第一塊「準備就緒」的回調中聲明您發佈的示例代碼,因此該功能是私有的。

,你可以做什麼,如果你真的想要一個全球性的功能,方法是:

window['formSubmitHandler'] = formSubmitHandler; 
第一功能

。或者,你可以把一個jQuery的「全球性」的功能:

$['formSubmitHandler'] = formSubmitHandler; 

在這種情況下,你會得到它爲$.formSubmitHandler

0

請嘗試移動功能進行功能塊的e.g

$(function() { 

    $.ajaxSetup({ cache: false }); 
    var dialogs = {}; 
} 

var formSubmitHandler = function (e) { 
    ... 
} 
0

formSubmitHandler只有聲明它的功能範圍內的存在,因爲你使用的var變量。

您需要:

  1. 聲明dialogClick在同一範圍內
  2. 在全球範圍內宣佈formSubmitHandler,使用window.formSubmitHandler或者乾脆function formSubmitHandler(){}
0

formSubmitHandler是在一個範圍內聲明的函數dialogClick()功能不可見

所以

  • 要麼聲明formSubmitHandler作爲global
  • 或你定義函數dialogClick內部document.ready功能(和formSubmitHandler可達因爲是在父範圍)