动态更改 SharePoint 2013 搜索代码段中的内容
Dynamically change content in SharePoint 2013 Search Snippet
我有一个函数和一个参数,我必须从 NavDropdownListContainer 动态获取数据并使用 JQuery 或 JavaScript.
在搜索文本框中设置它
请在下面找到屏幕截图以及与之相关的css。
不胜感激。
<div class="ms-floatLeft" id="SearchBox" name="Control">
<div class="ms-srch-sbLarge ms-srch-sb-borderFocused" id="ctl00_ctl38_g_c60051d3_9564_459e_8a40_e91f8abf4dcf_csr_sboxdiv">
<input title="Search Everything" class="ms-textLarge ms-srch-sbLarge-navWidth ms-srch-sb-prompt ms-helperText" id="ctl00_ctl38_g_c60051d3_9564_459e_8a40_e91f8abf4dcf_csr_sbox" accesskey="S" onkeydown="var ctl = $getClientControl(this);ctl.activateDefaultQuerySuggestionBehavior();" onkeypress="if (Srch.U.isEnterKey(String.fromCharCode(event.keyCode))) { $getClientControl(this).search(this.value);return Srch.U.cancelEvent(event); }" onfocus="var ctl = $getClientControl(this);ctl.hidePrompt();ctl.setBorder(true);" onblur="var ctl = $getClientControl(this);ctl.showPrompt();ctl.setBorder(false);" type="text" maxlength="2048" value="" autocorrect="off" autocomplete="off">
<a title="Navigation" class="ms-srch-sb-navLink ms-srch-sb-navLink-menuOpen" id="ctl00_ctl38_g_c60051d3_9564_459e_8a40_e91f8abf4dcf_csr_NavButton" onclick="$getClientControl(this).activateDefaultNavigationBehavior();return Srch.U.cancelEvent(event);" href="javascript: {}"> <img class="ms-srch-sbLarge-navImg" id="navImg" alt="Navigation" src="/_layouts/15/images/searchresultui.png?rev=23"> </a>
<a title="Search" class="ms-srch-sb-searchLink" id="ctl00_ctl38_g_c60051d3_9564_459e_8a40_e91f8abf4dcf_csr_SearchLink" onclick="$getClientControl(this).search($get('ctl00_ctl38_g_c60051d3_9564_459e_8a40_e91f8abf4dcf_csr_sbox').value);" href="javascript: {}"> <img class="ms-srch-sbLarge-searchImg" id="searchImg" alt="Search" src="/_layouts/15/images/searchresultui.png?rev=23"> </a>
<div class="ms-qSuggest-container ms-shadow" id="AutoCompContainer">
<div id="ctl00_ctl38_g_c60051d3_9564_459e_8a40_e91f8abf4dcf_csr_AutoCompList"></div>
</div>
<div class="ms-qSuggest-container ms-shadow" id="NavDropdownListContainer" style="display: block; visibility: visible; position: absolute;">
<div class="ms-qSuggest-list" id="ctl00_ctl38_g_c60051d3_9564_459e_8a40_e91f8abf4dcf_csr_NavDropdownList" style="width: 498px;">
<div class="ms-qSuggest-hListItem">Everything</div>
<div class="ms-qSuggest-listItem">Videos</div>
<div class="ms-qSuggest-listItem">People</div>
<div class="ms-qSuggest-listItem">Conversations</div>
</div>
</div>
</div>
</div>
我在 "Control_Searchbox.html" 中修改了如下代码,它位于“站点设置”>“Web 设计器图库”>“母版页和页面布局”>“显示模板”>“搜索”下:
//alert('Ready');
var searchScope = GetUrlKeyValue("searchscope", false, location.href);
//alert(searchScope);
if(searchScope != ""){
var navNodes = ctx.ClientControl.get_navigationNodes();
//alert(navNodes);
if (navNodes.length > 0) {
var nodeName;
var nodePromptString;
var nodeUrl;
for (var i = 0; i < navNodes.length; ++i) {
nodeName = navNodes[i].name;
nodePromptString = navNodes[i].promptString;
nodeUrl = navNodes[i].url;
//alert(nodeName + '/' + nodePromptString + '/' + nodeUrl + ' - ' + searchScope);
if(nodeName.toUpperCase() == searchScope.toUpperCase()){
ctx.ClientControl.set_resultsPageAddress(nodeUrl);
prompt = nodePromptString;
break;
}
}
}
}
因此,无论何时您想访问其中一个结果源,都必须将查询字符串作为
传递
http://siteurl/Search/Seiten/default.aspx?searchscope=Everything
我有一个函数和一个参数,我必须从 NavDropdownListContainer 动态获取数据并使用 JQuery 或 JavaScript.
在搜索文本框中设置它请在下面找到屏幕截图以及与之相关的css。
不胜感激。
<div class="ms-floatLeft" id="SearchBox" name="Control">
<div class="ms-srch-sbLarge ms-srch-sb-borderFocused" id="ctl00_ctl38_g_c60051d3_9564_459e_8a40_e91f8abf4dcf_csr_sboxdiv">
<input title="Search Everything" class="ms-textLarge ms-srch-sbLarge-navWidth ms-srch-sb-prompt ms-helperText" id="ctl00_ctl38_g_c60051d3_9564_459e_8a40_e91f8abf4dcf_csr_sbox" accesskey="S" onkeydown="var ctl = $getClientControl(this);ctl.activateDefaultQuerySuggestionBehavior();" onkeypress="if (Srch.U.isEnterKey(String.fromCharCode(event.keyCode))) { $getClientControl(this).search(this.value);return Srch.U.cancelEvent(event); }" onfocus="var ctl = $getClientControl(this);ctl.hidePrompt();ctl.setBorder(true);" onblur="var ctl = $getClientControl(this);ctl.showPrompt();ctl.setBorder(false);" type="text" maxlength="2048" value="" autocorrect="off" autocomplete="off">
<a title="Navigation" class="ms-srch-sb-navLink ms-srch-sb-navLink-menuOpen" id="ctl00_ctl38_g_c60051d3_9564_459e_8a40_e91f8abf4dcf_csr_NavButton" onclick="$getClientControl(this).activateDefaultNavigationBehavior();return Srch.U.cancelEvent(event);" href="javascript: {}"> <img class="ms-srch-sbLarge-navImg" id="navImg" alt="Navigation" src="/_layouts/15/images/searchresultui.png?rev=23"> </a>
<a title="Search" class="ms-srch-sb-searchLink" id="ctl00_ctl38_g_c60051d3_9564_459e_8a40_e91f8abf4dcf_csr_SearchLink" onclick="$getClientControl(this).search($get('ctl00_ctl38_g_c60051d3_9564_459e_8a40_e91f8abf4dcf_csr_sbox').value);" href="javascript: {}"> <img class="ms-srch-sbLarge-searchImg" id="searchImg" alt="Search" src="/_layouts/15/images/searchresultui.png?rev=23"> </a>
<div class="ms-qSuggest-container ms-shadow" id="AutoCompContainer">
<div id="ctl00_ctl38_g_c60051d3_9564_459e_8a40_e91f8abf4dcf_csr_AutoCompList"></div>
</div>
<div class="ms-qSuggest-container ms-shadow" id="NavDropdownListContainer" style="display: block; visibility: visible; position: absolute;">
<div class="ms-qSuggest-list" id="ctl00_ctl38_g_c60051d3_9564_459e_8a40_e91f8abf4dcf_csr_NavDropdownList" style="width: 498px;">
<div class="ms-qSuggest-hListItem">Everything</div>
<div class="ms-qSuggest-listItem">Videos</div>
<div class="ms-qSuggest-listItem">People</div>
<div class="ms-qSuggest-listItem">Conversations</div>
</div>
</div>
</div>
</div>
我在 "Control_Searchbox.html" 中修改了如下代码,它位于“站点设置”>“Web 设计器图库”>“母版页和页面布局”>“显示模板”>“搜索”下:
//alert('Ready');
var searchScope = GetUrlKeyValue("searchscope", false, location.href);
//alert(searchScope);
if(searchScope != ""){
var navNodes = ctx.ClientControl.get_navigationNodes();
//alert(navNodes);
if (navNodes.length > 0) {
var nodeName;
var nodePromptString;
var nodeUrl;
for (var i = 0; i < navNodes.length; ++i) {
nodeName = navNodes[i].name;
nodePromptString = navNodes[i].promptString;
nodeUrl = navNodes[i].url;
//alert(nodeName + '/' + nodePromptString + '/' + nodeUrl + ' - ' + searchScope);
if(nodeName.toUpperCase() == searchScope.toUpperCase()){
ctx.ClientControl.set_resultsPageAddress(nodeUrl);
prompt = nodePromptString;
break;
}
}
}
}
因此,无论何时您想访问其中一个结果源,都必须将查询字符串作为
传递http://siteurl/Search/Seiten/default.aspx?searchscope=Everything