2011-02-23 25 views
0

我希望自动完成显示仅在实际显示5个结果时才显示Displaying top 5 results的页脚。只有当有5个结果时显示YUI自动完成页脚

到目前为止,我已经设置了它,使得它不会显示,如果起初有少于5个结果,但是一旦加载了5个结果,页脚总是显示,无论实际显示多少结果。

请原谅愚蠢的flip噱头。

oAC.formatResult = function(oResultData, sQuery, sResultMatch) { 
     var sKey = sResultMatch 

     // Extract the part of the match that the user did not type 
     var sKeyRemainder = sKey.substr(sQuery.length); 


     oAC.setFooter(""); 
     var aMarkup = ["<div class='myCustomResult'>", 
          "<span style='font-weight:bold'>", 
          sQuery, 
          "</span>", 
          sKeyRemainder, 
          "<br>", 
          "</div>"]; 

     if (oResultData[2] >= 4) { 
      flip = true; 
     } 
     if (flip) { 
      oAC.setFooter("<div style=\"margin-left:5px;\"><span style=\"font-weight:bold;\">See more results for " + sQuery + "</span><br>Showing top 5 results</div>"); 
     } 
     return (aMarkup.join("")); 
     }; 

回答

1

而不是试图设置它在formatResult功能,我尝试使用doBeforeExpandContainer函数,它的作用就像一个魅力。

oAC.formatResult = function(oResultData, sQuery, sResultMatch) { 
    var sKey = sResultMatch 

    // Extract the part of the match that the user did not type 
    var sKeyRemainder = sKey.substr(sQuery.length); 


    oAC.setFooter(""); 
    var aMarkup = ["<div class='myCustomResult'>", 
         "<span style='font-weight:bold'>", 
         sQuery, 
         "</span>", 
         sKeyRemainder, 
         "<br>", 
         "</div>"]; 

    oAC.setFooter("<div class=\"ac-footer\"><div class=\"ac-footer-content\"><a class=\"ac-footer-link\" href=\"#\" onclick=\"spandex(this,event,'filter-company');return false;\">See more results for <b>" + sQuery + "</b></a><br><span class=\"ac-footer-sub\">Showing top 5 results</span></div></div>"); 

    return (aMarkup.join("")); 
}; 

oAC.doBeforeExpandContainer = function(sQuery, oResponse) { 
    if (oAC._nDisplayedItems <= 5) { 
     oAC.setFooter(""); 
    } 

    return true; 
} 

doBeforeExpandContainer被称为每个容器打开时(就像你希望它)和_nDisplayedItems是许多项目将如何显示在列表(也如你所期望的)。

所以当检索结果时,每次都添加页脚。然后,在框显示之前,如果有五个或更少的结果,则删除页脚。

0

您希望页脚仅在出现5个结果时出现?

那么你不应该改变

if (oResultData[2] >= 4) { 
    flip = true; 
} 

if (oResultData[2] == 4) { // is this a zero based number? or should this be 5? 
    flip = true; 
} 
else { flip = false } // assuming you don't already reset this in scope 

+0

是的,这是我尝试过的许多类似路线的一个变体。如果formatResult函数在每次显示自动完成时都被调用,则这将起作用。但是,只有在检索结果时才调用它。所以有了这个逻辑,如果你输入一个字母并得到5个以上的结果,页脚就会显示出来。然后当你输入更多的字母时,结果的数量会减少。一旦你下降到5以下,页脚应该消失。但是,由于结果已经被检索到,因此该函数不会被调用,并且页脚不受影响。 – Jimmy 2011-02-24 20:08:56

相关问题