jquery TokenInput 库 - 如何重置为初始状态
jquery TokenInput library - how to reset to initial state
我正在使用 jQuery 来自 http://loopj.com/jquery-tokeninput/ 的 TokenInput。
我有一位高级用户只能添加一个标记,所以我使用 tokenLimit: 1
,但是当用户 select 标记时,另一个 li 会自动添加并且元素宽度增加并且设计明智看起来不太合适。
所以我使用了回调函数 OnAdd
并删除了最后一个 li,这样它现在看起来就正确了。
但是当用户删除 selected 令牌时,TokenInput 框就会消失 - 我猜是因为现在没有 li。我尝试附加 li 并输入文本,但该功能不起作用。
谁能告诉我如何正确重置 TokenInput?
我已阅读文档但没有找到答案。
我也试过 selector.tokenInput("clear");
没用
据我在文档中看到的,TokenInput 似乎没有重置功能。
这是解决方案的工作片段。
此解决方案的工作原理是克隆将成为令牌输入的元素,然后在单击重置按钮时,当前令牌元素将被克隆的另一个副本替换。
$(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>
var tokens = $("#TOKENNAME .token-input-delete-token-facebook");
tokens.each(function () { $(this).trigger("click"); });
我知道这是一篇旧文章 post,我只是认为它可以帮助任何寻找答案的人。
该代码只是遍历列表并为每个选定的标记触发“删除”事件。
我正在使用 jQuery 来自 http://loopj.com/jquery-tokeninput/ 的 TokenInput。
我有一位高级用户只能添加一个标记,所以我使用 tokenLimit: 1
,但是当用户 select 标记时,另一个 li 会自动添加并且元素宽度增加并且设计明智看起来不太合适。
所以我使用了回调函数 OnAdd
并删除了最后一个 li,这样它现在看起来就正确了。
但是当用户删除 selected 令牌时,TokenInput 框就会消失 - 我猜是因为现在没有 li。我尝试附加 li 并输入文本,但该功能不起作用。
谁能告诉我如何正确重置 TokenInput?
我已阅读文档但没有找到答案。
我也试过 selector.tokenInput("clear");
没用
据我在文档中看到的,TokenInput 似乎没有重置功能。
这是解决方案的工作片段。
此解决方案的工作原理是克隆将成为令牌输入的元素,然后在单击重置按钮时,当前令牌元素将被克隆的另一个副本替换。
$(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>
var tokens = $("#TOKENNAME .token-input-delete-token-facebook");
tokens.each(function () { $(this).trigger("click"); });
我知道这是一篇旧文章 post,我只是认为它可以帮助任何寻找答案的人。 该代码只是遍历列表并为每个选定的标记触发“删除”事件。