我有以下代码:
var students = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('fullName'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/api/students?query=%QUERY',
wildcard: '%QUERY'
}
});
$('#student').typeahead({
minLength: 2,
highlight: true,
},
{
name: 'students',
display: function (item) { return item.fullName },
source: students.ttAdapter(),
templates: {
empty: [
'<div class="tt-empty-message">' +
'No results found' +
'</div>'
]
}
}).on("typeahead:select",
function (e, student) {
console.log("inside isselect");
isSelected = true;
vm.studentId = student.id;
});
我试图捕捉一个场景,如果用户输入一些乱码或除了先行值和点击提交按钮之外的东西,那么我需要显示一条错误消息。为此,我需要捕获预先输入列表,并查看typeeahed列表是否包含输入值。我怎么能做到这一点?
我现在已经搜索了这个解决方案5个小时了。我已经在其他线程上查看并实现了类似的答案,但似乎没有任何工作。比如看看这个答案:
http://jsfiddle.net/Fresh/bbzt9hcr/
我尝试了上面的代码,但是类型甚至没有出现。而我的代码完全正常。请让我知道如何解决这个问题。先感谢您。
有多种方法可以解决这个问题,最简单的方法是:您可以监听预先更改事件并使用变量存储所选值,然后在提交检查并发送该变量:http://jsfiddle.net/alfredopacino/bbzt9hcr/290/。
yourTypehead.on('typeahead:selected', function($e, datum) { // suggestion selected
selectedMovie = datum.value
});
$('#submit').click(function() {
if(selectedMovie) {
//your ajax call
} else {
alert("no valid movie")
}
});
这个问题是它不包括用户手动输入有效值的情况。要涵盖这种情况,您可以采用以下两种方式: