我正在构建一个应用程序,并且希望在文本区域内进行自动完成,就像 Twitter/Facebook 使用 @[name] 所做的那样。但是,我希望在输入 [TID:x] 时触发它,其中 x 是任意长度的整数。
看来 Twitter/Facebook 在您点击 @ 符号后开始自动完成,然后在其后发送文本数据以进行自动完成。有谁知道 jQuery UI 插件(或任何其他插件)是否可以做这样的事情?
这确实是可能的。您可以利用自动完成小部件的事件(search and select)来完成这个:
var triggered = false;
var trigger = "TDI:";
$("input").autocomplete({
source: [...],
search: function() {
if (!triggered) {
return false;
}
},
select: function(event, ui) {
var text = this.value;
var pos = text.lastIndexOf(trigger);
this.value = text.substring(0, pos + trigger.length) +
ui.item.value;
triggered = false;
return false;
},
focus: function() { return false; },
minLength: 0
}).bind("keyup", function() {
var text = this.value;
var len = text.length;
var last;
var query;
var index;
if (triggered) {
index = text.lastIndexOf(trigger);
query = text.substring(index + trigger.length);
$(this).autocomplete("search", query);
}
else if (len >= trigger.length) {
last = text.substring(len - trigger.length);
triggered = (last === trigger);
}
});
演示在这里:http://jsfiddle.net/andrewwhitaker/kCkga/
Notes:
- 这是一个非常有限演示。如果您尝试使其在字符串中间自动完成,它将不起作用。
- 要完成此示例,您需要做一些工作来确定光标在输入字段中的位置并在其中插入文本
- 可能还有其他错误,但我绝对认为这是可行的。希望这能让你开始。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)