2011-02-23 43 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

相關問題