2016-12-27 71 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