2016-12-27 17 views
0

私の目的は、複数のページ/ビューで同じコンテキストのオートコンプリート機能を実行することです。ビューの作成と編集など)。オートコンプリート機能のように私はjQueryのautocomplete()各ページ内を呼び出す必要があるので、私はShared_Layout.cshtml \Javascript複数のページで同じ関数名のコールバック

ビューに私のプロジェクトの

ページを書いていた

が利用できる必要とされる場所。私は_Layout.cshtmlで書かれたコードは次のようにされています、しかし

<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> 

:その後、任意のビュー(作成または編集)が必要です、オートコンプリート機能は、このコードと呼ばを持って

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

Chromeで、

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); 
    } 

私は取得していますエラーされています:

私は、プロジェクトを実行したとき、私はと期待されている次のコードを持っていないページのエラーを取得しています

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

関連する問題