Javascript 自动完成显示所有值
我很难显示所有可能的自动完成行。 我正在使用db来存储所有的行。 现在我使用这个脚本:Javascript 自动完成显示所有值,javascript,jquery,asp.net,asp.net-mvc,autocomplete,Javascript,Jquery,Asp.net,Asp.net Mvc,Autocomplete,我很难显示所有可能的自动完成行。 我正在使用db来存储所有的行。 现在我使用这个脚本: <script type="text/javascript"> $(document).ready(function () { $("#Industry").autocomplete({ source: function (request, response) { $.ajax({
<script type="text/javascript">
$(document).ready(function () {
$("#Industry").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Employee/SuggestWorkExperienceIndustry",
type: "POST",
dataType: "json",
data: { Prefix: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.Industry, value: item.Industry };
}))
}
})
},
messages: {
noResults: "failure", results: ""
}
});
});
</script>
它工作得很好,但我不知道当用户单击字段时如何从数据库中获取所有行。有一个in-autocomplete小部件minLength
,它的默认设置为1
。这意味着您需要在文本框中输入至少一个字符,然后它才能开始请求数据。将其设置为0
,应立即加载整个列表:
minLength: 0
但请确保这是您真正想要的行为,因为它确实会加载您的所有项目。可能对用户不太友好
更新。不过,似乎没有内置的方法来触发焦点搜索。但手动触发它非常简单:
$("#Industry").autocomplete({
source: ...
messages: ...
minLength: 0
}).focus(function () {
$(this).autocomplete("search");
});
让那些有同样问题的人更快地回答。 最后的脚本应该如下所示:
<script type="text/javascript">
$(document).ready(function () {
$("#VarName").autocomplete({
source: function (request, response) {
$.ajax({
url: "/ControllerName/ActionName",
type: "POST",
dataType: "json",
data: { Prefix: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.VarName, value: item.VarName};
}))
}
})
},
messages: {
noResults: "failure", results: ""
},
minLength: 0,
}).focus(function () {
$(this).autocomplete("search")});
});
</script>
$(文档).ready(函数(){
$(“#VarName”).autocomplete({
来源:功能(请求、响应){
$.ajax({
url:“/ControllerName/ActionName”,
类型:“POST”,
数据类型:“json”,
数据:{前缀:request.term},
成功:功能(数据){
响应($.map)(数据、功能(项){
返回{label:item.VarName,值:item.VarName};
}))
}
})
},
信息:{
结果:失败,结果:
},
最小长度:0,
}).focus(函数(){
$(this.autocomplete(“search”)});
});
当用户单击字段时,请求是否发生?如果是的话,前缀的值是多少?@Andrei nope,请求不会发生。如果发生这种情况,我会检查前缀
是否为空
,并将所有值从db设置为行业
,仅此而已。谢谢,@Andrei,这部分解决了我的问题。现在完整的列表已上载,但不是立即单击,我必须输入smtng并将其删除,以便发送长度为0的请求。有没有可能在没有其他动作的情况下进行点击?@GeekyNuns,部分原因是?另一部分是什么?刚刚按enter键,所以评论没有完成。@GeekyNuns,我明白了。更新
<script type="text/javascript">
$(document).ready(function () {
$("#VarName").autocomplete({
source: function (request, response) {
$.ajax({
url: "/ControllerName/ActionName",
type: "POST",
dataType: "json",
data: { Prefix: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.VarName, value: item.VarName};
}))
}
})
},
messages: {
noResults: "failure", results: ""
},
minLength: 0,
}).focus(function () {
$(this).autocomplete("search")});
});
</script>