2016-12-27 66 views
0

我的目標是執行多頁/瀏覽次數相同的情況下的自動完成功能,對於具有相同的類名相同的輸入(即客戶端名稱是自動完成的許多頁面像創建和編輯視圖等)。在需要JavaScript回調在多個頁面相同的函數名

因爲我需要調用jQuery的autocomplete()在每一頁,我已經寫在

查看\ Shared_Layout.cshtml我的項目

頁所以自動完成功能將提供。我已經寫在_Layout.cshtml的代碼如下:

<script> 
    $(document).ready(function() { 
     //common 
     $('.form-control.salescode').autocomplete({ 
       minLength: 4, 
       source: '@Url.Action("GetAccountManager", "AccountManager")', 
       select: callBackSalesCodeLookUp 
     }); 
    }); 
</script> 

然後任何View(創建或編輯)要求,自動完成功能,把這種現象稱之爲代碼:

<script> 
    function callBackSalesCodeLookUp(event, ui) 
    { 
     event.preventDefault(); 
     var selectedArr = ui.item.value.split("|"); 
     var accountManagerID = selectedArr[0]; 
     var accountManagerName = selectedArr[1]; 

     $('.form-control.salescode').val(accountManagerID); 
    } 
</script> 

然而,當我跑的項目中,我得到的已經不具有下面的代碼頁的錯誤,這是預期:

function callBackSalesCodeLookUp(event, ui) 
    { 
     event.preventDefault(); 
     var selectedArr = ui.item.value.split("|"); 
     var accountManagerID = selectedArr[0]; 
     var accountManagerName = selectedArr[1]; 

     $('.form-control.salescode').val(accountManagerID); 
    } 

我正的錯誤,是在Chrome爲:

jquery-3.1.1.js:3855 Uncaught ReferenceError: callBackSalesCodeLookUp is not defined at HTMLDocument. (Login?ReturnUrl=%2FAccountOpeningRegister%2FCreate:393) at mightThrow (jquery-3.1.1.js:3570) at process (jquery-3.1.1.js:3638)

我想減少代碼,這是我編造這樣的原因。我會很高興知道有這個編碼任何更好的辦法。

謝謝你

回答

1

在調用它之前檢查窗口中是否存在函數。

<script> 
    if (typeof callBackSalesCodeLookUp == 'function') { 
     $(document).ready(function() { 
       //common 
       $('.form-control.salescode').autocomplete({ 
        minLength: 4, 
        source: '@Url.Action("GetAccountManager", "AccountManager")', 
        select: callBackSalesCodeLookUp 
       }); 
      }); 
    } 
</script> 
+1

大!!!!有用! – hiFI

相關問題