用户选择一个选项后,推特预先输入不保留价值

Twitter typeahead not preserving value after user selects an option

我正在尝试使用 Twitter 的 typeahead 优化下拉选择栏以进行 typeahead 自动完成。当我实现 twitter 的 typeahead 时,我无法保留用户选择的值或在刷新页面后键入它。此外,当我尝试提交我正在处理的表单时,它似乎从未被记录为值字段。

这是我的代码:

用于自动完成和建议的子字符串匹配器

var substringMatcher = function(strs) {
          return function findMatches(q, cb) {
            var matches, substringRegex;
            matches = [];
            substrRegex = new RegExp(q, 'i');
            jQuery(function ($){
                  $.each(strs, function(i, str) {
                      if (substrRegex.test(str)) {
                          matches.push(str);
                      }
                  });
                  cb(matches);
              });
          };
    };

提前输入

 var Array = [];
        jQuery(function ($) {
                $(document).ready(function(){
                    $('#project').typeahead({
                                hint: true,
                                highlight: true,
                                minLength: 1
                            },
                            {
                                name: 'Projects',
                                source: substringMatcher(Array)
                            });
                });

            });

html

<c:forEach items="${Form.projectList}" var="val">
   <script type="text/javascript">
        var Projects = "${val.project}";
        Array.push(Projects);
   </script>
</c:forEach>

<div id="the-basics">
   <input id = "project" class="typeahead" type="text" placeholder="Projects">
</div>

任何人都可以给我一些关于如何解决这个问题的建议吗?

… when I try to submit the form I am working on, it seems like it's never recorded as a value field.

您的 input 元素缺少 name 属性,该属性 is required 用于在提交表单时发送 input 的值。尝试使用这个 HTML:

<input id="project" name="project" class="typeahead" type="text" placeholder="Projects">

我不确定这是否也能解决页面刷新时值丢失的问题,或者是否需要其他解决方案。