0

私はこのコミュニティを初めて利用しています。過去48時間の検索と試用のためにこれについての回答を探しています。JQuery Autocomplete Sharepoint 2013とInfopathは一度だけ動作します

私はInfopath Designer 2013でフォームを作成しました。また、SPD 2013を使用しています。これを達成するために、SPServicesを使用してJqueryオートコンプリートにバインドするフィールドを2つ取得します。

私はこれを動作させましたが、それは一度しか動作しません。私は、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 
 

 
}); 
 
/*

私はどこかでそれを読んでいますポストバックに関する問題。しかし、私は初めてこのコードを動作させるようには思えません。 2番目のフォームはポストバック呼び出しを実行し、添付されたオートコンプリートを入力からクリアします。

この問題を解決するには、バインドやリバインドコードの代替手段を失うのを防ぐためにコードを置く必要がありますか?

+0

あなたは '$( "入力[ID $ = 'FormControl0_V1_I1_T3を']")に移動しようとしたことがあり内部autocomplete'コード。 '$().SPServices'の' completeFunc'に最​​後の行がありますか? – Max

答えて

0

何かをしてもしなくても、フォームは常に自動的にバックグラウンドでリロードされるため、関数を再度呼び出す必要があります。 関数内のコードの最後に、setTimeout()メソッドを使用して500ミリ秒後に自分自身を呼び出します。
あなたがSys.Application.add_loadている場所も、あなたがこれを行う必要があります。

Sys.Application.add_load(function() { 
ExecuteOrDelayUntilScriptLoaded(YourFunctionName, "sp.js"); 
    }); 
関連する問題