javascript - Jquery autocomplete no result append as dropdown child issue -
i have website (cpusort.com) made in asp.net mvc3, user can search using jquery ui autocomplete , select found resutls.
i using script resutls
$(function () { function log(message) { } $("#cpu").autocomplete({ source: "/search/", minlength: 1, response: function (event, ui) { if (ui.content.length === 0) { alert("no result found"); //.append("<a href='/advancedsearch/[search_term]'>more results [search_term]</a>") } }, open: function (event, ui) { var url = "<a href='/advancedsearch/[search_term]'>more results [search_term]</a>"; $("ul.ui-autocomplete.ui-menu").append(url); }, select: function (event, ui) { $("#cpu").val(ui.item.title); $("#cpu-query").val(ui.item.query); $("#cpu-clockspeed").val(ui.item.clockspeed); $("#cpu-cores").val(ui.item.cores); $("#cpu-image").val(ui.item.cpuimage); return false; } }) .data("ui-autocomplete")._renderitem = function (ul, item) { return $("<li>") .append("<a href='/cpu/" + item.query + "'><div style='width:100%'><span class='titlesearch' >" + item.title + "</span></div><div <div style='width:100%'><span class='titlesmallspan'>" + item.clockspeed + " ghz | " + item.cores + "</span></div></a>") .appendto(ul); }; });
but how can show if there no result found, , in case using alert, how can append single child text "search in advance"
.append("<a href='/advancedsearch/[search_term]'>more results [search_term]</a>")
please figure out, thanks
i suggest make use of open
event of jquery auto-complete
open: function (event, ui) { search_term = event.target.value; var d = $('.ui-autocomplete').append("<a href='/advancedsearch/[" + search_term + "]'>more results [" + search_term + "]</a>")
}
this append html elements need @ end of options listed in auto-complete.
hope can understand.
updates:
from comments, seems tried appending won't work open
event of auto-complete.
instead should go response
event of auto-complete.
why?
1) open event triggered when matching found , won't work when match not found.
2) whereas response
event triggered in both cases(this can't used case#1) helpful case#2.
response: function (event, ui) { if (ui.content.length === 0) { //check none results search_term = event.target.value; $(this).next('a').remove(); //remove before add $(this).after("<a href='/advancedsearch/[" + search_term + "]'>more results [" + search_term + "]</a>"); } }
well makes sense, think so.
modified code re-create equal question.
Comments
Post a Comment