-4

我写了这个脚本

 $.ajax({
     type: "POST",
     url: "/my/GetTagsByID",
     data: {
         Link_ID: LId
     },
     datatype: "json",
     success: function(result) {
         $('#tokenfield-typeahead').val('Success 1, Success 2')
     },
     error: function(jqXHR) {
         alert(jqXHR.status);
     }
 })

问题是,但我不知道确切的位置应该是什么SCRIPTS

当我以这种方式提升它时:

<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/dist/typeahead.bundle.js"></script>
<link href="~/Scripts/dist/css/tokenfield-typeahead.css" rel="stylesheet" />
<script src="~/Scripts/dist/bootstrap-tokenfield.js"></script>
<link href="~/Scripts/dist/css/bootstrap-tokenfield.css" rel="stylesheet" />

结果如下 在此处输入图像描述

这意味着,我可以使用TokenFieldTypeAhead它没有替换值$('#tokenfield-typeahead').val('Success 1, Success 2'),这意味着我无法访问 jQuery?

但是当我将Jquery脚本的位置切换到这个时(将 JQUERY 移到底部):

<script src="~/Scripts/dist/typeahead.bundle.js"></script>
<link href="~/Scripts/dist/css/tokenfield-typeahead.css" rel="stylesheet" />
<script src="~/Scripts/dist/bootstrap-tokenfield.js"></script>
<link href="~/Scripts/dist/css/bootstrap-tokenfield.css" rel="stylesheet" />
<script src="~/Scripts/jquery-1.10.2.js"></script>

我得到以下结果 在此处输入图像描述

我不能用Tokenfield,我不能再用TypeAhead了。

我应该做些什么?

添加了新代码 我已经添加了新代码,似乎 JQuery 无法将 tokenfiled 识别为函数 - 我如何在添加了所有必需引用的情况下解决这个问题 - 请参阅下面的代码(我在控制台中遇到相同的错误,没有无论我在哪里测试) - 请运行代码并单击按钮

$('#bt').click(function() {

  $('#tokenfield-typeahead').tokenfield('setTokens', ['blue', 'red', 'white']);

});
<link href="http://sliptree.github.io/bootstrap-tokenfield/dist/css/bootstrap-tokenfield.css" rel="stylesheet" />
<link href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script src="http://sliptree.github.io/bootstrap-tokenfield/dist/bootstrap-tokenfield.js"></script>



<input type="text" class="form-control" id="tokenfield-typeahead" value="Temp 1, Temp 2" data-limit="10" placeholder="Enter tags" />

<button id="bt">Click me</button>

在此处输入图像描述

4

2 回答 2

4

...这意味着我无法访问 jQuery?

不,根本不是这个意思。这只是意味着这val没有按照您的预期进行。

这并不让我感到惊讶。您正在使用的tokenfield 插件有可能需要您使用特定于 tokenfield 的方法来设置值,而不是val. 浏览文档,似乎是tokenfield('setTokens', ...)

$('#tokenfield-typeahead').tokenfield('setTokens', 'Success 1,Success2');

我应该做些什么?

将 jQuery 放在任何插件之前,因为插件需要 jQuery 才能连接自己;当事情没有按预期工作时,始终将文档作为您的第一个操作;并使用正确的方法在令牌字段中设置“值”。

于 2017-10-19T08:33:10.233 回答
0

找到解决方案 - 感谢 TJ 建议在控制台中运行脚本

问题是,Bootstrap.min.js 需要加载beforeTokenfiled (JS) - 这样做解决了问题,现在 JQuery 可以将 Tokenfield 识别为函数并按预期工作。我仍然不明白为什么 Bootstrap 没有加载,因为我的 _Layout 页面和 Bundle 中有它。无论如何,我会看到如何重新安排我的脚本包 -

谢谢

于 2017-10-20T06:10:37.707 回答