Javascript jquery使用“@”自动完成
我想用jQueryUIAutoComplete实现这种fiddler演示 我的示例唯一的问题是箭头键事件中有一个问题,与jquery自动完成不同。此处的工作演示:&& 正如您提到的使用自动完成: 因此,我的textarea输出将是@c,而输入标记输出将是@c be@[c] HTML 这里的工作演示:&& 正如您提到的使用自动完成: 因此,我的textarea输出将是@c,而输入标记输出将是@c be@[c] HTMLJavascript jquery使用“@”自动完成,javascript,jquery,jquery-ui,jquery-plugins,Javascript,Jquery,Jquery Ui,Jquery Plugins,我想用jQueryUIAutoComplete实现这种fiddler演示 我的示例唯一的问题是箭头键事件中有一个问题,与jquery自动完成不同。此处的工作演示:&& 正如您提到的使用自动完成: 因此,我的textarea输出将是@c,而输入标记输出将是@c be@[c] HTML 这里的工作演示:&& 正如您提到的使用自动完成: 因此,我的textarea输出将是@c,而输入标记输出将是@c be@[c] HTML 我编写了这个问题中提到的小部件,并修复了这个问题: 我编写了这个问题中提到的小
我编写了这个问题中提到的小部件,并修复了这个问题:
我编写了这个问题中提到的小部件,并修复了这个问题:
您可以尝试我们刚刚在GitHub中开源的以下jquery插件:您可以尝试我们刚刚在GitHub中开源的以下jquery插件:你好!因此,您想要相同的行为,即如果隐藏标记的大小写值为=@[C],文本区域为@C,但对于这个JSFIDLE?干杯不,不是这个JSFIDLE,我想使用jquery自动完成插件。。。这一个有问题尝试使用你的箭头键,直到你到达下拉列表的末尾,但确保先填充文本区域确定,尝试箭头键,似乎等待+1事件;如果您能用JSFIDLE详细说明您的输入和输出需求,我可能会帮助您实际上,JSFIDLE的输出就是我需要的。。。但是我想使用jquery自动完成来实现它。我使用的插件是不同的,有问题的箭头键和选择。。。因此,您可以在jquery自动完成上使用与JSFIDLE相同的输出来实现这一点吗。。。你的意思是:使用这个和你想要的1从文本区域中选择,2在输出文本框中显示值?对不起,如果我问的问题太多了,我只是想确保我正确理解了你的问题:你好!因此,您想要相同的行为,即如果隐藏标记的大小写值为=@[C],文本区域为@C,但对于这个JSFIDLE?干杯不,不是这个JSFIDLE,我想使用jquery自动完成插件。。。这一个有问题尝试使用你的箭头键,直到你到达下拉列表的末尾,但确保先填充文本区域确定,尝试箭头键,似乎等待+1事件;如果您能用JSFIDLE详细说明您的输入和输出需求,我可能会帮助您实际上,JSFIDLE的输出就是我需要的。。。但是我想使用jquery自动完成来实现它。我使用的插件是不同的,有问题的箭头键和选择。。。因此,您可以在jquery自动完成上使用与JSFIDLE相同的输出来实现这一点吗。。。你的意思是:使用这个和你想要的1从文本区域中选择,2在输出文本框中显示值?对不起,如果我问的问题太多了,我只是想确保我正确理解你的问题:有点不对劲。。。你不能以多种方式使用它,它只会附加@[提及]而不是整个字符串……嗯,你是什么意思?如果您使用上面的JSFIDLE并告诉输入和输出我将进行更改?请在点编号中输入:例如,您在textarea=@android hello@c中键入此项,并且在输入框中的值应为@[android]hello@a[c]。。。但是你贴的那张不同。文本区域是android hello@c,输入框@[c]不更新eaha,因此您还需要:如果您在纹理中键入@foobad zoo@c;输入框应该是@foobad zoo@[C]是的?好的,给我5分钟,我可能可以在自动完成中完成。有点问题。。。你不能以多种方式使用它,它只会附加@[提及]而不是整个字符串……嗯,你是什么意思?如果您使用上面的JSFIDLE并告诉输入和输出我将进行更改?请在点编号中输入:例如,您在textarea=@android hello@c中键入此项,并且在输入框中的值应为@[android]hello@a[c]。。。但是你贴的那张不同。文本区域是android hello@c,输入框@[c]不更新eaha,因此您还需要:如果您在纹理中键入@foobad zoo@c;输入框应该是@foobad zoo@[C]是的,好的,给我5分钟,我可以在自动完成中完成。
<textarea id='inputbox' placeholder='When @mentions is called its output is put on the input box as well as updated when textarea is blur and submitted'></textarea>
<br/>
<input id="tags" />
<span id="loading" class="hidden">Loading...</span>
function split(val) {
return val.split(/@\s*/);
}
function extractLast(term) {
return split(term).pop();
}
function getTags(term, callback) {
$.ajax({
url: "http://api.stackoverflow.com/1.1/tags",
data: {
filter: term,
pagesize: 5
},
type: "POST",
success: callback,
jsonp: "jsonp",
dataType: "jsonp"
});
}
$(document).ready(function() {
$("#inputbox")
// don't navigate away from the field on tab when selecting an item
.bind("keydown", function(event) {
if (event.keyCode === $.ui.keyCode.TAB && $(this).data("autocomplete").menu.active) {
event.preventDefault();
}
}).autocomplete({
source: function(request, response) {
if (request.term.indexOf("@") >= 0) {
$("#loading").show();
getTags(extractLast(request.term), function(data) {
response($.map(data.tags, function(el) {
return {
value: el.name,
count: el.count
}
}));
$("#loading").hide();
});
}
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function(event, ui) {
var terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
$("#tags").val("@["+ui.item.value+"]");
ui.item.value = "@" + ui.item.value;
terms.push(ui.item.value);
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join("");
return false;
}
}).data("autocomplete")._renderItem = function(ul, item) {
return $("<li>")
.data("item.autocomplete", item)
.append("<a>@[" + item.label + "] <span class='count'>(" + item.count + ")</span></a>")
.appendTo(ul);
};
});
span.count {
font-style: italic;
color: #C0C0C0;
}
.hidden { display: none; }
textarea { width: 300px; height: 100px; resize: none; }