jquery tokenInput如何将ajax调用url动态更改为脚本

Posted

技术标签:

【中文标题】jquery tokenInput如何将ajax调用url动态更改为脚本【英文标题】:jquery tokenInput how to change the ajax call url to script dynamically 【发布时间】:2012-09-18 07:20:05 【问题描述】:

我正在使用这个强大而漂亮的插件http://loopj.com/jquery-tokeninput/,但是遇到了一个问题。

有没有办法在我的 tokenInput 中动态更改或更改 ajax 调用的 URL。

例如。

jQuery("#selector").tokenInput("http://mysite.com?name=John");

当我点击页面上的按钮时,我想将网址从 http://mysite.com?name=John 更改为 http://mysite.com?name=Adam

所以整个逻辑应该是这样的:

jQuery("#myButton").click(function()
    //Change the URL of the jQuery("#selector").tokenInput();
);

一开始我的做法是这样的:

jQuery("#myButton").click(function()
        jQuery("#selector").tokenInput("http://mysite.com?name=Adam");
);

这样做的问题是它创建了 token-input-list-facebook 类的副本,只是想看看我在说什么。

从这样的:

收件人

如您所见,它复制了 textinput 或 token-input-list-facebook 类。

我只是向您展示我在我的应用程序中尝试执行的操作的简单逻辑。

有没有办法做到这一点?您的帮助将不胜感激和奖励! :-)

顺便说一句,我使用的是 facebook 主题,这就是为什么类名是 token-input-list-facebook

【问题讨论】:

【参考方案1】:

我自己解决了。这就是我所做的。

jQuery("#selector").tokenInput("http://mysite.com?name=John");

jQuery("#myButton").click(function()
    jQuery(".token-input-list-facebook").remove();
    jQuery("#selector").tokenInput("http://mysite.com?name=Adam");
);

我只是 remove()token-input-list-facebook 因为这是每次我们初始化 tokenInput 时添加的类。然后使用所需的 ajax URL 再次重新初始化 tokenInput。

太糟糕了,我在 TokenInput 中没有看到关于如何做到这一点的好文档。

【讨论】:

【参考方案2】:

从该组件的代码中:您可以提供一个返回字符串的函数,而不是提供一个字符串作为 url。所以你应该可以写:

function setupMyTokenInput($input, $btn)
   //this "protected" var will hold the target url
   var url = 'http://mysite.com?name=John';

   $input.tokenInput( 
   //instead of a string, give a function which returns the variable's value
   function()
     return url;
   );

   $btn.click(function()
       //clicking the button changes the var's value
       url = 'http://mysite.com?name=Adam';
   );


$(function()
   setupMyTokenInput( $('#selector'), $('#button') );
);

我还没有尝试过,但接近这个的东西应该可以工作。

【讨论】:

【参考方案3】:

这里提到了解决方案: https://github.com/loopj/jquery-tokeninput/pull/77#issuecomment-1291896

将回调函数传递给url:

$("#searchKeywords").tokenInput(function() 
  return 'ajax_scripts/keyword_search.php?gameId=' + $('#gameId').val();
, theme: "facebook");

【讨论】:

【参考方案4】:

您需要在初始化令牌输入时传递调用函数的 URL。像这样

function buildURL()
    url=[build your url here]
    return url


jQuery("#selector").tokenInput(buildURL);

就是这样,那么当用户按下一个键tokeinput调用函数之前,通过ajax调用。

【讨论】:

【参考方案5】:

如果您希望 tokenInput 与 ajax 一起使用 这是给你的例子 在 asp.net (vb) 中使用处理程序 https://github.com/yanivsuzana/jquery-tokeninput-ajax-asp.net-vb

【讨论】:

在此处添加相关代码会很有帮助,以防链接随时间发生变化。这将使您的答案更加完整。【参考方案6】:
function buildURL()
    url=[build your url here]
    return url


jQuery("#selector").tokenInput(buildURL);

【讨论】:

以上是关于jquery tokenInput如何将ajax调用url动态更改为脚本的主要内容,如果未能解决你的问题,请参考以下文章

jquery TokenInput 库 - 如何重置为初始状态

使用 jquery tokeninput 和acts_as_taggable_on

将占位符文本添加到 Jquery Tokeninput

如何通过 Javascript 从 jquery-tokeninput 插件中获取添加的令牌 ID、名称列表?

如何向 jQuery Tokeninput 添加占位符?

jQuery Tokeninput:只读不工作