I would like to customize the InfoTemplate that pops up when the search widget is used, but I'm having some unexpected results. Here is my code for the search source:
//Lots layer sources.push({ featureLayer: lyrLots, searchFields: ["PID", "LOT_NO", "OWNER"], exactMatch: false, outFields: ["*"], displayField: "LOT_NO", suggestionTemplate: "PID: ${PID}, Lot #: ${LOT_NO}, Owner: ${OWNER}", name: "Lots", placeholder: "Search Lots", maxResults: 6, maxSuggestions: 6, //Create an InfoTemplate and include fields infoTemplate: new InfoTemplate("Lots", "PID: ${PID}</br>Lot #: ${LOT_NO}</br>Owner: ${OWNER}</br>Title Link: ${TITLE_LINK:testLink}"), minCharacters: 0 });
And the code to customize "Title Link" depending on whether a link is present or not:
//The following determines whether a hyperlink is present in a field. If no hyperlink, the field will //show "Not available" in the infoWindow. If there is a hyperlink, the field will show "Click to open" as a hyperlink testLink = function (value, key, data) { var result = ""; //If hyperlink field is null or contains a space, add "Not available" to the infoWindow if((value === " " && typeof value === "string")||(value === null && typeof value === "object") || (typeof value === "undefined")){ result = "Not available"; } //Add the hyperlink if present else { result = "<a href ='" + value + "' target='_blank'>Click to open</a>"; } alert("Result: " + result); return result; };
If I open my map and do a search immediately, it seems "testLink" is not firing. I tried placing an alert window in testLink and it does not pop up so I know testLink is not even running. However, if I do an "Identify" (which also uses testLink to format links in its resulting infoWindow) and then do a search, "testLink" does run and format things correctly. Once an "identify" has been performed, testLink will run when subsequent searches are performed but I have no idea why this is. Does anyone have any ideas?