【问题标题】:jQuery Typeahead - Uncaught TypeError: Cannot read property 'name' of undefinedjQuery Typeahead - 未捕获的类型错误:无法读取未定义的属性“名称”
【发布时间】:2015-06-29 14:53:37
【问题描述】:

我正在使用Bootstrap-3 Typeahead pluginBootstrap Tag Input plugin。我是这样使用的:

<input type="text" id="name" name="test" data-provide="typeahead">

还有 jQuery:

$.get('/design/assets/advertisements/countries.json', function(data) {
    $("#name").typeahead({
        source: data
    });
    $('#name').tagsinput({
        typeahead: {
            source: data
        }
    });
}, 'json');

但是,预输入和标签在某些时候起作用。每当我输入一些单词时,我都会得到建议,但是每当我选择了一个建议时,我所写的任何内容都会被添加到标签输入之后。

示例:如果我写“Bah”并选择“Bahamas”,它看起来像这样:(我认为它会删除“Bah”)

我收到此错误 - 我不知道是不是这个原因:

Uncaught TypeError: Cannot read property 'name' of undefined

错误调用到这个文件:bootstrap3-typeahead.js

【问题讨论】:

标签: javascript jquery html twitter-bootstrap typeahead.js


【解决方案1】:

我已经下载了非最低版本的 bootstrap-3 typeahead 插件并更改了这个:

displayText: function(item) {
  return item.name || item;
},

到这里

displayText: function(item) {
  if (typeof item == 'undefined') {
    return '';
  }
  return item.name || item;
},

它解决了问题。

其实我不知道是 bootstrap-3 typeahead 插件的 bug 还是与我使用的 bootstrap 标签输入插件不兼容。

【讨论】:

    【解决方案2】:

    我对 Bootstrap 3 进行了以下更改 - 在第 312 行中预先输入

    旧代码:

    displayText: function (item) {
          return typeof item !== 'undefined' && typeof item.name != 'undefined' && item.name || item;
    },
    

    更新代码:

    displayText: function (item) {
            if(item){
                    if(item.name){
                        return item.name;
                    }
                    return item;
            }
            else{
                return '';
            }
        },
    

    【讨论】:

      猜你喜欢
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 2015-01-06
      相关资源
      最近更新 更多