如何检查用户是否输入了打字值

时间:2017-12-31 00:42:56

标签: javascript jquery typeahead.js typeahead

我有以下代码:

 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/

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

1 个答案:

答案 0 :(得分: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")
   }

});

问题在于它没有涵盖用户手动输入有效值的情况。 为了涵盖这种情况,您可以采用以下两种方式:

  • onSubmit你可以添加一个&#39;远程验证&#39;:基本上是一个额外的ajax请求来检查该值是否有效使用服务器
  • 在&#34;标记选择&#34;中转换您的预先选择,将标记限制为1并禁止任何自定义值https://bootstrap-tagsinput.github.io/bootstrap-tagsinput/examples/(有插件的TONS)