Javascript 为什么typeahead不适用于此MVC5应用程序? 问题

Javascript 为什么typeahead不适用于此MVC5应用程序? 问题,javascript,asp.net-mvc,twitter-bootstrap,typeahead.js,Javascript,Asp.net Mvc,Twitter Bootstrap,Typeahead.js,我无法为我的MVC5应用程序实现twitter typeahead。我可以输入文本,但没有提前输入或自动完成 已安装TwitterTypeahead api 实现的本地javascript 更新 我尝试在上实现示例。我确信,如果我能让这些例子发挥作用,那么我的应用程序也能发挥作用吗 尝试 我已经检查了twitter api。我还看了一些教程。 见下文: 教程2包含的fiddle代码也不起作用,其行为类似于我的MVC应用程序 代码 我的整个应用程序都有自己的回购协议。你可以找到它。我在

我无法为我的MVC5应用程序实现twitter typeahead。我可以输入文本,但没有提前输入或自动完成

  • 已安装TwitterTypeahead api
  • 实现的本地javascript
更新 我尝试在上实现示例。我确信,如果我能让这些例子发挥作用,那么我的应用程序也能发挥作用吗

尝试 我已经检查了twitter api。我还看了一些教程。 见下文:

教程2包含的fiddle代码也不起作用,其行为类似于我的MVC应用程序

代码 我的整个应用程序都有自己的回购协议。你可以找到它。我在这里包括我的独立视图。我确实使用共享布局来放入必要的javascript

我不知道为什么这不起作用(代码也来自教程),但非常感谢您的帮助。我看不出任何明显的语法错误

 @{
    ViewBag.Title = "TypeAhead";
}
<script>
    var substringMatcher = function (strs) {
        return function findMatches(q, cb) {
            var matches, substrRegex;

            // an array that will be populated with substring matches
            matches = [];

            // regex used to determine if a string contains the substring `q`
            substrRegex = new RegExp(q, 'i');

            // iterate through the pool of strings and for any string that
            // contains the substring `q`, add it to the `matches` array
            $.each(strs, function (i, str) {
                if (substrRegex.test(str)) {
                    // the typeahead jQuery plugin expects suggestions to a
                    // JavaScript object, refer to typeahead docs for more info
                    matches.push({ value: str });
                }
            });

            cb(matches);
        };
    };

    var states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California',
      'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii',
      'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana',
      'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota',
      'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire',
      'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota',
      'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island',
      'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont',
      'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'
    ];

    $('#the-basics .typeahead').typeahead({
        hint: true,
        highlight: true,
        minLength: 1
    },
    {
        name: 'states',
        displayKey: 'value',
        source: substringMatcher(states)
    });
</script>
<body>
    <div id="the-basics">
        <input class="typeahead" type="text" placeholder="States of USA">
    </div> 
</body>
@{
ViewBag.Title=“TypeAhead”;
}
var substringMatcher=函数(strs){
返回函数findMatches(q,cb){
var匹配,子关系x;
//将填充子字符串匹配项的数组
匹配项=[];
//用于确定字符串是否包含子字符串'q'的正则表达式`
substregex=新的RegExp(q,‘i’);
//在字符串池中迭代并查找
//包含子字符串'q',将其添加到'matches'数组中
$。每个(str,功能(i,str){
if(子相关性测试(str)){
//typeahead jQuery插件希望用户提供建议
//JavaScript对象,有关更多信息,请参阅typeahead文档
匹配.push({value:str});
}
});
cb(比赛);
};
};
var州=[“阿拉巴马州”、“阿拉斯加州”、“亚利桑那州”、“阿肯色州”、“加利福尼亚州”,
“科罗拉多州”、“康涅狄格州”、“特拉华州”、“佛罗里达州”、“乔治亚州”、“夏威夷州”,
爱达荷州、伊利诺斯州、印第安纳州、爱荷华州、堪萨斯州、肯塔基州、路易斯安那州、,
缅因州、马里兰州、马萨诸塞州、密歇根州、明尼苏达州、,
“密西西比州”、“密苏里州”、“蒙大拿州”、“内布拉斯加州”、“内华达州”、“新罕布什尔州”,
“新泽西州”、“新墨西哥州”、“纽约州”、“北卡罗来纳州”、“北达科他州”,
“俄亥俄州”、“俄克拉何马州”、“俄勒冈州”、“宾夕法尼亚州”、“罗德岛州”,
“南卡罗来纳州”、“南达科他州”、“田纳西州”、“德克萨斯州”、“犹他州”、“佛蒙特州”,
“弗吉尼亚州”、“华盛顿州”、“西弗吉尼亚州”、“威斯康星州”、“怀俄明州”
];
$(“#basics.typeahead”).typeahead({
提示:没错,
推荐理由:没错,
最小长度:1
},
{
名称:“州”,
displayKey:'值',
来源:子字符串匹配器(状态)
});

如果将//twitter.github.com/typeahead.js/releases/latest/typeahead.jquery.min.js添加到“外部资源”(左菜单)中而不是css框中(使用jquery.min),则小提琴可以工作

所以也许你的项目中也有类似的东西。 可以将$(…).typeahead(…)调用到


这解决了我眼前的问题。我将尝试从一个控制器扩展这个accept json数据。无论如何,fiddle是否能够复制这种行为?也就是说,不是发布到控制器,而是发布到某个地方的某个api并获取数据?一旦我确定javascript可以正常工作,那么是否可以将其移植到我的MVC应用程序?谢谢。我不这么认为,但是你可以通过在代码中添加console.log(msg)并检查js控制台(右键单击浏览器中的“检查内容”)来了解情况。是的,我使用了console.log并立即发现了一大堆新问题。我在这上面花了很多时间。请看这里:
$(document).ready(function () { $(...).typeahead(...) })