【发布时间】:2017-02-26 22:37:21
【问题描述】:
我在这个thread 中得到了很大的帮助。但是仍然存在一个问题,我现在已经为此苦苦挣扎了几个小时。对于我的自动完成功能,我想使用从我的控制器生成的条目,而不是每次都生成一个数组。我知道通常如何将我的控制器作为自动完成功能的来源,这对我来说没问题。但是我将如何包含我的控制器路径,例如这个小提琴中的“/AutoCompleteFeatures/AutoCompleteSentenceSuggestion”?一切都应该是一样的,只是源不是数组,而是我的控制器路径来传递我需要的值。
JS 小提琴
$(function () {
var availableTags = [
"ActionScript",
"AppleScript",
],
mL = 3;
function split(val) {
return val.split("\n");
}
function extractLast(term) {
return split(term).pop();
}
$("#SentenceSuggestionField1")
.autocomplete({
minLength: mL,
source: function (request, response) {
// delegate back to autocomplete, but extract the last term
var lastTerm = extractLast(request.term);
if (lastTerm.length >= mL) {
response($.ui.autocomplete.filter(availableTags, lastTerm));
}
},
select: function (event, ui) {
var terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
terms.push("\u2022 " + ui.item.value);
// Format value to display
terms.push("");
this.value = terms.join("\r\n");
return false;
}
});
});
`
我已经为此苦苦挣扎了几个小时,并尝试了许多不同的方法。但是这些都没有奏效,例如我试图用数据库中的值创建一个 JS 数组,并像在小提琴中那样使用它,但这没有成功。我尝试了几个以我的控制器路径作为源的示例,但这也没有成功......所以我希望你对我有一个提示或提示,如何做到这一点。谢谢!
根据请求控制器操作:
public JsonResult AutoCompleteField1(string term)
{
var data = db.SentenceSuggestions
.Where(s => s.SuggestionText.ToLower()
.Contains(term.ToLower()))
.Select(x => new { label = x.SuggestionText })
.ToArray();
return Json(data, JsonRequestBehavior.AllowGet);
}
【问题讨论】:
-
显示你的控制器方法返回你想要的数据(你的
source函数需要进行ajax调用) -
@StephenMuecke 我在帖子中添加了我的控制器操作作为更新。
-
请参阅 this answer 以了解
source函数的代码应该是什么样子的示例。但是你的代码中有很多其他的东西真的没有意义,特别是你在select函数中尝试做的事情。并且插件有一个选项minLength: 3,如果你想在调用服务器之前输入 3 个字符,你可以设置它 -
刚刚看到您之前的几个问题,您似乎将其附加到
<textarea>并希望为每个新段落触发自动完成(您使用“句子”一词有点令人困惑)。minLength选项只接受integer值,而不是函数,因此一个选项可能是销毁“Enter”键上的插件,计算现有字符的长度,添加 3,然后重新初始化插件并设置 @987654332 @ 到那个值。 -
@StephenMuecke 我不能说我多么感谢像你这样的人在这里帮助像我这样的初学者。我通过指向另一个线程的链接阅读了您的答案,创建了我的 ajax 调用,并且它的工作方式应该如此。因此,感谢您在这里的帮助,但最重要的是,感谢您迄今为止为我提供的所有帮助。我刚刚阅读了您的最后一条评论,我会尝试一下,这听起来像是一个更好的解决方案,就像当前使用 mL 的解决方法一样。
标签: javascript jquery asp.net-mvc jquery-ui jquery-ui-autocomplete