<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<style>
*{font: 12px '宋體'}
.tab_suggest{border:1px solid #333; background:#fff; position:absolute; z-index:101; visibility: hidden;}
.tab_suggest th, .tab_suggest td{font:12px '宋體'; font-weight:normal; height:17px; text-align:left; line-height:17px; padding:2px 3px; white-space:nowrap; cursor: default;}
.tab_suggest td{color:#008000; text-align:right;}
.tab_suggest tr.cur{background:#36c; color:#fff}
.tab_suggest tr.cur td{color:#fff}
</style>
<title>無標題文檔</title>
<script type="text/javascript" src="js/suggest.js"></script>
<script type="text/javascript">
window.onload=function(){
var mySuggest = new hansir.TextSuggest();
mySuggest.add_suggest('textSuggest', 'suggest.php', 'post');
mySuggest.add_suggest('textSuggest2', 'suggest.php', 'post', 100);
$('textSuggest').focus();
}
</script>
</head>
<body>
<br /><br />
<form action="suggest.php" method="post"><input type="hidden" name="add" value="add" />
沒有遲延:<input type="text" id="textSuggest" name="keyword" style="width:300px;" autocomplete="off" /> <input type="submit" value="提 交" />
</form>
<br /><br /><br />
<form action="suggest.php" method="post"><input type="hidden" name="add" value="add" />
遲延100ms:<input type="text" id="textSuggest2" name="keyword" style="width:300px;" autocomplete="off" /> <input type="submit" value="提 交" />
</form>
</body>
</html>
最後的html檔案.
調用:
後台資料以 [['關鍵字符','估計數量'], ['關鍵字符','估計數量'], ...] 格式輸出。
頁面onload後調用(因為有body.appendChild方法)
var mySuggest = new hansir.TextSuggest();
mySuggest.add_suggest(inp, url, method, defer, defer2);
除了前兩項必填,後三項都是可選的
inp :輸入框ID名。
url :ajax請求的後台伺服器頁面地址。
method :發送方試 get或post,預設post。
defer :按鍵計時,即使用者輸入字元多久後請求伺服器,預設不計時,使用者輸入字元後立即發送。
defer2 :伺服器返回結果計時,即伺服器發送請求後多長時間沒有返回資料,列表自動隱藏,預設200ms。
測試說明:
1、資料庫存放的是臨時資料。
2、可以輸入“中華人民共和國”,“中”,”藍色“ 測試。
3、可以輸入一些其他的自訂資料,提交存到表裡,然後就可以用剛剛提交的資料測試。
4、我的伺服器網速慢,可能有個別卡的現象。
5、遲延:使用者輸入字元多久後請求伺服器,照顧輸入快的使用者 :)
— 如果伺服器速度夠快可以考慮遲延,如果慢就無所謂了,反正是一個請求完成才會進行下一個 :)
已知缺陷:
1、下拉提示框位置問題:因為是以BODY為參考,所以位置會隨body大小改變(下拉式清單顯示時拖動視窗大小可看效果)。
— 解決方案:真正用時可以根據input的父元素定位(這樣還可以省些資源,即不畢每次顯示下拉框都計算位置)。
2、用五筆IME在FF下輸入完成後上下方向鍵不好使要切換一下IME才可以,拼音則正常。
— 解決方案:google也有同樣問題,所以。。。 :)。