如何检查用户是否输入了预先输入值

问题描述 投票:0回答:1

我有以下代码:

 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/

我尝试了上面的代码,但是类型甚至没有出现。而我的代码完全正常。请让我知道如何解决这个问题。先感谢您。

javascript jquery typeahead.js typeahead
1个回答
0
投票

有多种方法可以解决这个问题,最简单的方法是:您可以监听预先更改事件并使用变量存储所选值,然后在提交检查并发送该变量: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")
   }

});

这个问题是它不包括用户手动输入有效值的情况。要涵盖这种情况,您可以采用以下两种方式:

© www.soinside.com 2019 - 2024. All rights reserved.