JQuery Autocomplete Sharepoint 2013和Infopath,只能工作一次

问题描述:

我是这个社区的新手,在过去的48个小时里,我一直在寻找关于这个问题的答案。JQuery Autocomplete Sharepoint 2013和Infopath,只能工作一次

我在Infopath Designer 2013中创建了一个窗体。此外,我使用的是SPD 2013,我试图完成的是使用SPServices将几个字段绑定到Jquery Autocomplete以创建数据向量。

我得到这个工作,但它只能工作一次。我在SharePoint内创建了一个页面,其中包括在InfoPath Web部件,也是一个内容编辑器Web部件使用脚本片段包含:

<script type="text/javascript" src="../jquery-ui-1.11.4.custom/external/jquery/jquery.js"></script> 
 
<script type="text/javascript" src="../jquery-ui-1.11.4.custom/jquery-ui.min.js"></script> 
 
<script type="text/javascript" src="../Scripts/jquery.SPServices.js"></script> 
 
<script type="text/javascript" src="../Scripts/OpenCaseFormAutocomplete.js"></script>

我的文件脚本OpenCaseFormAutocomplete:

Sys.Application.add_load(function() { 
 

 
$(document).ready(readyCall); 
 

 
function readyCall(){ 
 

 
    var externalParties1 = []; 
 
    var externalParties2 = []; 
 

 
    $().SPServices({ 
 
    operation: "GetListItems", 
 
    listName: "Autocomplete_Customer", 
 
    CAMLViewFields: "", 
 
    async: false, 
 
    completefunc: function (xData, Status) { 
 
     $(xData.responseXML).SPFilterNode("z:row").each(function() { 
 
     externalParties1.push($(this).attr("ows_Title")); 
 
     }); 
 
    } 
 
    }); 
 

 
    $().SPServices({ 
 
    operation: "GetListItems", 
 
    listName: "Autocomplete_End-User", 
 
    CAMLViewFields: "", 
 
    async: false, 
 
    completefunc: function (xData, Status) { 
 
     $(xData.responseXML).SPFilterNode("z:row").each(function() { 
 
     externalParties2.push($(this).attr("ows_Title")); 
 
     }); 
 
    } 
 
    }); 
 

 
    
 
    $("input[id$='FormControl0_V1_I1_T3']").autocomplete({ 
 
    source: externalParties1, 
 
    minLength: 3 
 
    }); 
 
    
 
    $("input[id$='FormControl0_V1_I1_T4']").autocomplete({ 
 
    source: externalParties2, 
 
    minLength: 3 
 
    }); 
 
\t 
 
\t  
 
} \t 
 

 
}); 
 
/*

我在某处读到了那里我这是回发问题。但我似乎没有得到这个代码在第一次后工作。第二个表单运行回发调用,它从输入中清除附加的自动完成。

是否有修复这个,我应该把代码,以避免失去绑定或重新绑定代码的替代?

+0

您是否尝试过移动'$( “输入[ID $ = 'FormControl0_V1_I1_T3']”)autocomplete'代码中。 $()的'completeFunc'。SPServices'有最后一行吗? – Max

因为无论您是否执行任何操作,表单都会在后台自动重新加载,所以您需要再次调用您的函数。 因此,在函数的代码末尾,使用setTimeout()方法在500毫秒之后调用它自己。
此外,你应该做到这一点,你必须Sys.Application.add_load:

Sys.Application.add_load(function() { 
ExecuteOrDelayUntilScriptLoaded(YourFunctionName, "sp.js"); 
    });