豆瓣说的微博输入框搜索自动补齐,当你在输入框输入@开头的时候能够自动把你的好友搜索出来,我知道有一些jquery autocomplete可以实现,但是要控制只有当输入指定字符才触发这个功能不知道怎么实现,找了些jquery autocomplete都没有提到类似这样的功能~
<script type="text/javascript" src="http://img3.douban.com/anduin/anduin-min-1311061054.js"></script>
(压缩过了,部分变量和函数名缩成了单字母,可以用http://jsbeautifier.org/格式化一下)
this.bind("keyup", function (d) {
var c = c || e(b.highlighter);
offset = g.getCursorPosition(this); // 当前光标位置
preChar = d.target.value.charAt(offset - 1); // 前一字符
d.target.value || c.html("");
if (offset < d.target.value.length + 1 && k.length && h) o = g.highlightName(k, d.target.value).replace(/\s{2,}/g, " "), c.html(o), o = d.target.value.replace(/<b[^>]+>|<\/b>/g, ""), d.target.value = o, g.setCursorPosition(d.target, offset);
d.keyCode !== 38 && d.keyCode !== 40 && d.keyCode !== 13 && d.keyCode !== 16 && d.keyCode !== 9
&& j(this, preChar, offset); // 交给j函数去处理
(d.keyCode === 9 || d.keyCode === 13) && a && a.find(".on").size() && a.is(":visible") && f(this, b.highlighter)
});
j = function (d, c, j) {
var h = d.value,
k = h.substring(0, j).lastIndexOf("@"),
o = h.substring(k, j).indexOf(" "),
q = {};
p = h.substring(k + 1, j);
// 判断‘@’
b.mode === "complete" ? c === "@" && (q = g.getCarePos(d, h.substring(0, j - 1)), l(d, q)) : m(d);
k !== -1 && o === -1 ? (b.mode === "complete" && (q = g.getCarePos(d, h.substring(0, k))), p && p.length <= 10 ?
// 发送ajax请求
e.getJSON( b.dataUrl, //** URL
{ count: b.itemCount, word: p}, //** 数据
function (c) { //** 响应函数
c.users.length ? (a.html(Mustache.to_html(b.listTmpl, c)), a.find("li").hasClass("on") || a.find("li:first").attr("class", "on"), n = a.find("li").size(), b.mode === "complete" ? l(d, q) : m(d)) : a.hide()
}) : b.mode === "complete" ? i() : (c = b.customData(), c.users.length ? (n = c.users.length, a.html(Mustache.to_html(b.listTmpl, c)), a.children().click(function () {
f(d, b.highlighter)
})) : i())) : a && a.hide()
},
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。