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

Posted

技术标签:

【中文标题】jquery TokenInput 库 - 如何重置为初始状态【英文标题】:jquery TokenInput library - how to reset to initial state 【发布时间】:2017-05-12 13:39:29 【问题描述】:

我正在使用来自 http://loopj.com/jquery-tokeninput/ 的 jQuery TokenInput。

我有一位前辈,用户只能添加一个标记,所以我使用tokenLimit: 1,但是当用户选择标记时,会自动添加另一个 li,并且元素宽度会增加,并且在设计上看起来不合适。

所以我使用回调函数OnAdd 并删除最后一个 li,所以它现在看起来正确。

但是当用户删除选定的令牌时,TokenInput 框就会消失 - 我猜是因为现在没有 li。我试图附加 li 并输入文本,但该功能不起作用。

谁能告诉我如何正确重置 TokenInput?

我已阅读文档但没有找到答案。

我也试过selector.tokenInput("clear"); 不工作

【问题讨论】:

【参考方案1】:

据我在文档中看到的,TokenInput 似乎没有重置功能。

这是一个解决方案的工作 sn-p。

此解决方案的工作原理是克隆将成为令牌输入的元素,然后当单击重置按钮时,当前令牌元素将替换为克隆的另一个副本。

$(document).ready(function() 
  
    var tokenCopy = $("#demo-input-local").clone()  

    function resetToken() 
      var newToken = tokenCopy.clone()
      $(".token-input-list")
        .before(newToken)
        .remove()
      
      setToken()

          
      
    
    function setToken() 
      
            $("#demo-input-local").tokenInput([
                id: 7, name: "Ruby",
                id: 11, name: "Python",
                id: 13, name: "javascript",
                id: 17, name: "ActionScript",
                id: 19, name: "Scheme",
                id: 23, name: "Lisp",
                id: 29, name: "C#",
                id: 31, name: "Fortran",
                id: 37, name: "Visual Basic",
                id: 41, name: "C",
                id: 43, name: "C++",
                id: 47, name: "Java"
            ]
           ,onDelete: function (item) 
             
              // Decide here if you need to do a reset then...
              resetToken()
            
      );
      
      ;
      
     

    setToken()
    
    
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://www.loopj.com/jquery-tokeninput/src/jquery.tokeninput.js"></script>
    <link rel="stylesheet" href="http://www.loopj.com/jquery-tokeninput/styles/token-input.css" type="text/css" />
    <link rel="stylesheet" href="http://www.loopj.com/jquery-tokeninput/styles/token-input-facebook.css" type="text/css" />

    <h2>Simple Local Data Search</h2>
    <div>
        <input type="text" id="demo-input-local" name="blah" />
        <input type="button" value="Submit" />
        <input type="button" id="btnReset" value="Reset" />
    </div>

【讨论】:

感谢您的回答@VanquiishedWombat,但我没有任何重置按钮。而且我无法按要求添加重置按钮 ok 修改为在删除时重置。请注意,您需要添加自己的检查以识别高级用户何时需要重置!【参考方案2】:
var tokens = $("#TOKENNAME .token-input-delete-token-facebook");
tokens.each(function ()  $(this).trigger("click"); );

我知道这是一篇旧帖子,我只是认为它可以帮助任何寻找答案的人。 代码只是遍历列表并为每个选定的标记触发“删除”事件。

【讨论】:

以上是关于jquery TokenInput 库 - 如何重置为初始状态的主要内容,如果未能解决你的问题,请参考以下文章

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

如何向 jQuery Tokeninput 添加占位符?

Jquery Tokeninput如何获取名称而不是id [关闭]

如何在 Rails 中使用 jquery tokeninput?

jQuery-tokeninput 失败:“术语”未定义?

rails jquery tokeninput 返回“不是函数”