Modifica della casella di ricerca IntelPrompt Web Part Web JavaScript / JQuery
-
29-09-2020 - |
Domanda
Ho un page_layout in cui ho intenzione di essere utilizzato da molte pagine, questo layout della pagina ha un WebPart di SearchBox, al momento ha una "ricerca ..." generica.Tuttavia quello che voglio è cambiarlo in modo che dice "Cerca in qualunque pagina che sei su".Non sto avendo problemi a prendere il nome della pagina che sono in poi, ma il cambiamento dell'inizio iniziale a ciò che voglio.Ho provato le cose obitive come document.getElementById('NBSwebpartSiteSearch').InitialPrompt = 'test';
Soluzione
Interessante - Il comportamento del 2013 utilizza una funzione nell'evento sfocatura della casella di ricerca per popolare o nascondere il termine "ricerca ..." come appropriato - suppongo di supportare vecchie versioni IE invece di usare la proprietà del segnaposto...
così!Quello di cui hai bisogno è:
//use this instead of immediate or jQuery ready because we want to manipulate SP generated markup
_spBodyOnLoadFunctionNames.push("searchPromptSetup");
function searchPromptSetup() {
function spPromptHider(searchDOMElement) {
//make sure you have a valid object
if (searchDOMElement) {
//give it a placeholder if it doesn't already have one
if (!searchDOMElement.placeholder) searchDOMElement.placeholder = "Search in whatever page you are on";
/*use SP's javascript to hide the 'Search...' prompt, note the $ here is not the jQuery alias...
the OR assignment is my lazy way of allowing the function to be used in the blur event later... */
var control = $getClientControl(searchDOMElement) || $getClientControl(this);
control.hidePrompt();
}
}
var searchBox = document.getElementById('<yoursearchboxid>');
// if you don't add this listener to the blur event it will just reset to 'Search...'
searchBox.addEventListener("blur", spPromptHider);
spPromptHider(searchBox);
}
.
Quanto sopra funzionerà solo con i browser che supportano l'attributo segnaposto ... ma potresti espandere su di esso per aggiungere supporto per quelli che non lo fanno.